// Copyright (c) The NodeRT Contributors
// All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the ""License""); you may
// not use this file except in compliance with the License. You may obtain a
// copy of the License at http://www.apache.org/licenses/LICENSE-2.0
//
// THIS CODE IS PROVIDED ON AN  *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS
// OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY
// IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
// MERCHANTABLITY OR NON-INFRINGEMENT.
//
// See the Apache Version 2.0 License for specific language governing permissions
// and limitations under the License.

// TODO: Verify that this is is still needed..
#define NTDDI_VERSION 0x06010000

#include <v8.h>
#include "nan.h"
#include <string>
#include <ppltasks.h>
#include "CollectionsConverter.h"
#include "CollectionsWrap.h"
#include "node-async.h"
#include "NodeRtUtils.h"
#include "OpaqueWrapper.h"
#include "WrapperBase.h"

#using <Windows.WinMD>

// this undefs fixes the issues of compiling Windows.Data.Json, Windows.Storag.FileProperties, and Windows.Stroage.Search
// Some of the node header files brings windows definitions with the same names as some of the WinRT methods
#undef DocumentProperties
#undef GetObject
#undef CreateEvent
#undef FindText
#undef SendMessage

const char* REGISTRATION_TOKEN_MAP_PROPERTY_NAME = "__registrationTokenMap__";

using v8::Array;
using v8::String;
using v8::Value;
using v8::Boolean;
using v8::Integer;
using v8::FunctionTemplate;
using v8::Object;
using v8::Local;
using v8::Function;
using v8::Date;
using v8::Number;
using v8::PropertyAttribute;
using v8::Primitive;
using Nan::HandleScope;
using Nan::Persistent;
using Nan::Undefined;
using Nan::True;
using Nan::False;
using Nan::Null;
using Nan::MaybeLocal;
using Nan::EscapableHandleScope;
using Nan::HandleScope;
using Nan::TryCatch;
using namespace concurrency;

namespace NodeRT { namespace Windows { namespace UI { namespace Xaml { namespace Controls { 
  v8::Local<v8::Value> WrapBackClickEventArgs(::Windows::UI::Xaml::Controls::BackClickEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::BackClickEventArgs^ UnwrapBackClickEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapDragItemsStartingEventArgs(::Windows::UI::Xaml::Controls::DragItemsStartingEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::DragItemsStartingEventArgs^ UnwrapDragItemsStartingEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapNotifyEventArgs(::Windows::UI::Xaml::Controls::NotifyEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::NotifyEventArgs^ UnwrapNotifyEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapSemanticZoomViewChangedEventArgs(::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs^ UnwrapSemanticZoomViewChangedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapTextControlPasteEventArgs(::Windows::UI::Xaml::Controls::TextControlPasteEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::TextControlPasteEventArgs^ UnwrapTextControlPasteEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapContainerContentChangingEventArgs(::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^ UnwrapContainerContentChangingEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIInsertionPanel(::Windows::UI::Xaml::Controls::IInsertionPanel^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::IInsertionPanel^ UnwrapIInsertionPanel(Local<Value> value);
  
  v8::Local<v8::Value> WrapIItemContainerMapping(::Windows::UI::Xaml::Controls::IItemContainerMapping^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::IItemContainerMapping^ UnwrapIItemContainerMapping(Local<Value> value);
  
  v8::Local<v8::Value> WrapINavigate(::Windows::UI::Xaml::Controls::INavigate^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::INavigate^ UnwrapINavigate(Local<Value> value);
  
  v8::Local<v8::Value> WrapISemanticZoomInformation(::Windows::UI::Xaml::Controls::ISemanticZoomInformation^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ISemanticZoomInformation^ UnwrapISemanticZoomInformation(Local<Value> value);
  
  v8::Local<v8::Value> WrapSemanticZoomLocation(::Windows::UI::Xaml::Controls::SemanticZoomLocation^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ UnwrapSemanticZoomLocation(Local<Value> value);
  
  v8::Local<v8::Value> WrapCandidateWindowBoundsChangedEventArgs(::Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs^ UnwrapCandidateWindowBoundsChangedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapChoosingGroupHeaderContainerEventArgs(::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^ UnwrapChoosingGroupHeaderContainerEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapChoosingItemContainerEventArgs(::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^ UnwrapChoosingItemContainerEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapColumnDefinitionCollection(::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^ UnwrapColumnDefinitionCollection(Local<Value> value);
  
  v8::Local<v8::Value> WrapDataTemplateSelector(::Windows::UI::Xaml::Controls::DataTemplateSelector^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::DataTemplateSelector^ UnwrapDataTemplateSelector(Local<Value> value);
  
  v8::Local<v8::Value> WrapDragItemsCompletedEventArgs(::Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs^ UnwrapDragItemsCompletedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapStyleSelector(::Windows::UI::Xaml::Controls::StyleSelector^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::StyleSelector^ UnwrapStyleSelector(Local<Value> value);
  
  v8::Local<v8::Value> WrapGroupStyle(::Windows::UI::Xaml::Controls::GroupStyle^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::GroupStyle^ UnwrapGroupStyle(Local<Value> value);
  
  v8::Local<v8::Value> WrapGroupStyleSelector(::Windows::UI::Xaml::Controls::GroupStyleSelector^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::GroupStyleSelector^ UnwrapGroupStyleSelector(Local<Value> value);
  
  v8::Local<v8::Value> WrapItemCollection(::Windows::UI::Xaml::Controls::ItemCollection^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ItemCollection^ UnwrapItemCollection(Local<Value> value);
  
  v8::Local<v8::Value> WrapItemContainerGenerator(::Windows::UI::Xaml::Controls::ItemContainerGenerator^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ItemContainerGenerator^ UnwrapItemContainerGenerator(Local<Value> value);
  
  v8::Local<v8::Value> WrapMediaTransportControlsHelper(::Windows::UI::Xaml::Controls::MediaTransportControlsHelper^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::MediaTransportControlsHelper^ UnwrapMediaTransportControlsHelper(Local<Value> value);
  
  v8::Local<v8::Value> WrapRowDefinitionCollection(::Windows::UI::Xaml::Controls::RowDefinitionCollection^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::RowDefinitionCollection^ UnwrapRowDefinitionCollection(Local<Value> value);
  
  v8::Local<v8::Value> WrapTextBoxTextChangingEventArgs(::Windows::UI::Xaml::Controls::TextBoxTextChangingEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::TextBoxTextChangingEventArgs^ UnwrapTextBoxTextChangingEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapTextCompositionChangedEventArgs(::Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs^ UnwrapTextCompositionChangedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapTextCompositionEndedEventArgs(::Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs^ UnwrapTextCompositionEndedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapTextCompositionStartedEventArgs(::Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs^ UnwrapTextCompositionStartedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapToolTipService(::Windows::UI::Xaml::Controls::ToolTipService^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ToolTipService^ UnwrapToolTipService(Local<Value> value);
  
  v8::Local<v8::Value> WrapUIElementCollection(::Windows::UI::Xaml::Controls::UIElementCollection^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::UIElementCollection^ UnwrapUIElementCollection(Local<Value> value);
  
  v8::Local<v8::Value> WrapCalendarViewDayItemChangingEventArgs(::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^ UnwrapCalendarViewDayItemChangingEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapHubSectionHeaderClickEventArgs(::Windows::UI::Xaml::Controls::HubSectionHeaderClickEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::HubSectionHeaderClickEventArgs^ UnwrapHubSectionHeaderClickEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapSectionsInViewChangedEventArgs(::Windows::UI::Xaml::Controls::SectionsInViewChangedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::SectionsInViewChangedEventArgs^ UnwrapSectionsInViewChangedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapWebViewNavigationFailedEventArgs(::Windows::UI::Xaml::Controls::WebViewNavigationFailedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::WebViewNavigationFailedEventArgs^ UnwrapWebViewNavigationFailedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapICommandBarElement(::Windows::UI::Xaml::Controls::ICommandBarElement^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ICommandBarElement^ UnwrapICommandBarElement(Local<Value> value);
  
  v8::Local<v8::Value> WrapICommandBarElement2(::Windows::UI::Xaml::Controls::ICommandBarElement2^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ICommandBarElement2^ UnwrapICommandBarElement2(Local<Value> value);
  
  v8::Local<v8::Value> WrapCalendarDatePickerDateChangedEventArgs(::Windows::UI::Xaml::Controls::CalendarDatePickerDateChangedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::CalendarDatePickerDateChangedEventArgs^ UnwrapCalendarDatePickerDateChangedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapCalendarViewSelectedDatesChangedEventArgs(::Windows::UI::Xaml::Controls::CalendarViewSelectedDatesChangedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::CalendarViewSelectedDatesChangedEventArgs^ UnwrapCalendarViewSelectedDatesChangedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapContentDialogButtonClickDeferral(::Windows::UI::Xaml::Controls::ContentDialogButtonClickDeferral^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ContentDialogButtonClickDeferral^ UnwrapContentDialogButtonClickDeferral(Local<Value> value);
  
  v8::Local<v8::Value> WrapContentDialogButtonClickEventArgs(::Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs^ UnwrapContentDialogButtonClickEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapContentDialogClosedEventArgs(::Windows::UI::Xaml::Controls::ContentDialogClosedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ContentDialogClosedEventArgs^ UnwrapContentDialogClosedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapContentDialogClosingDeferral(::Windows::UI::Xaml::Controls::ContentDialogClosingDeferral^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ContentDialogClosingDeferral^ UnwrapContentDialogClosingDeferral(Local<Value> value);
  
  v8::Local<v8::Value> WrapContentDialogClosingEventArgs(::Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs^ UnwrapContentDialogClosingEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapContentDialogOpenedEventArgs(::Windows::UI::Xaml::Controls::ContentDialogOpenedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ContentDialogOpenedEventArgs^ UnwrapContentDialogOpenedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapDatePickerValueChangedEventArgs(::Windows::UI::Xaml::Controls::DatePickerValueChangedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::DatePickerValueChangedEventArgs^ UnwrapDatePickerValueChangedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapDynamicOverflowItemsChangingEventArgs(::Windows::UI::Xaml::Controls::DynamicOverflowItemsChangingEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::DynamicOverflowItemsChangingEventArgs^ UnwrapDynamicOverflowItemsChangingEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapHubSectionCollection(::Windows::UI::Xaml::Controls::HubSectionCollection^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::HubSectionCollection^ UnwrapHubSectionCollection(Local<Value> value);
  
  v8::Local<v8::Value> WrapListViewPersistenceHelper(::Windows::UI::Xaml::Controls::ListViewPersistenceHelper^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ListViewPersistenceHelper^ UnwrapListViewPersistenceHelper(Local<Value> value);
  
  v8::Local<v8::Value> WrapRichEditBoxTextChangingEventArgs(::Windows::UI::Xaml::Controls::RichEditBoxTextChangingEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::RichEditBoxTextChangingEventArgs^ UnwrapRichEditBoxTextChangingEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapScrollViewerView(::Windows::UI::Xaml::Controls::ScrollViewerView^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ScrollViewerView^ UnwrapScrollViewerView(Local<Value> value);
  
  v8::Local<v8::Value> WrapScrollViewerViewChangedEventArgs(::Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs^ UnwrapScrollViewerViewChangedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapScrollViewerViewChangingEventArgs(::Windows::UI::Xaml::Controls::ScrollViewerViewChangingEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ScrollViewerViewChangingEventArgs^ UnwrapScrollViewerViewChangingEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapSearchBoxQueryChangedEventArgs(::Windows::UI::Xaml::Controls::SearchBoxQueryChangedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::SearchBoxQueryChangedEventArgs^ UnwrapSearchBoxQueryChangedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapSearchBoxQuerySubmittedEventArgs(::Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs^ UnwrapSearchBoxQuerySubmittedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapSearchBoxResultSuggestionChosenEventArgs(::Windows::UI::Xaml::Controls::SearchBoxResultSuggestionChosenEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::SearchBoxResultSuggestionChosenEventArgs^ UnwrapSearchBoxResultSuggestionChosenEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapSearchBoxSuggestionsRequestedEventArgs(::Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs^ UnwrapSearchBoxSuggestionsRequestedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapSplitViewPaneClosingEventArgs(::Windows::UI::Xaml::Controls::SplitViewPaneClosingEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::SplitViewPaneClosingEventArgs^ UnwrapSplitViewPaneClosingEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapTimePickerValueChangedEventArgs(::Windows::UI::Xaml::Controls::TimePickerValueChangedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::TimePickerValueChangedEventArgs^ UnwrapTimePickerValueChangedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapWebViewContentLoadingEventArgs(::Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs^ UnwrapWebViewContentLoadingEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapWebViewDeferredPermissionRequest(::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^ UnwrapWebViewDeferredPermissionRequest(Local<Value> value);
  
  v8::Local<v8::Value> WrapWebViewDOMContentLoadedEventArgs(::Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs^ UnwrapWebViewDOMContentLoadedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapWebViewLongRunningScriptDetectedEventArgs(::Windows::UI::Xaml::Controls::WebViewLongRunningScriptDetectedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::WebViewLongRunningScriptDetectedEventArgs^ UnwrapWebViewLongRunningScriptDetectedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapWebViewNavigationCompletedEventArgs(::Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs^ UnwrapWebViewNavigationCompletedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapWebViewNavigationStartingEventArgs(::Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs^ UnwrapWebViewNavigationStartingEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapWebViewNewWindowRequestedEventArgs(::Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs^ UnwrapWebViewNewWindowRequestedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapWebViewPermissionRequest(::Windows::UI::Xaml::Controls::WebViewPermissionRequest^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::WebViewPermissionRequest^ UnwrapWebViewPermissionRequest(Local<Value> value);
  
  v8::Local<v8::Value> WrapWebViewPermissionRequestedEventArgs(::Windows::UI::Xaml::Controls::WebViewPermissionRequestedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::WebViewPermissionRequestedEventArgs^ UnwrapWebViewPermissionRequestedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapWebViewSettings(::Windows::UI::Xaml::Controls::WebViewSettings^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::WebViewSettings^ UnwrapWebViewSettings(Local<Value> value);
  
  v8::Local<v8::Value> WrapWebViewUnsupportedUriSchemeIdentifiedEventArgs(::Windows::UI::Xaml::Controls::WebViewUnsupportedUriSchemeIdentifiedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::WebViewUnsupportedUriSchemeIdentifiedEventArgs^ UnwrapWebViewUnsupportedUriSchemeIdentifiedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapWebViewUnviewableContentIdentifiedEventArgs(::Windows::UI::Xaml::Controls::WebViewUnviewableContentIdentifiedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::WebViewUnviewableContentIdentifiedEventArgs^ UnwrapWebViewUnviewableContentIdentifiedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapColumnDefinition(::Windows::UI::Xaml::Controls::ColumnDefinition^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ColumnDefinition^ UnwrapColumnDefinition(Local<Value> value);
  
  v8::Local<v8::Value> WrapRowDefinition(::Windows::UI::Xaml::Controls::RowDefinition^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::RowDefinition^ UnwrapRowDefinition(Local<Value> value);
  
  v8::Local<v8::Value> WrapAutoSuggestBoxQuerySubmittedEventArgs(::Windows::UI::Xaml::Controls::AutoSuggestBoxQuerySubmittedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::AutoSuggestBoxQuerySubmittedEventArgs^ UnwrapAutoSuggestBoxQuerySubmittedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapAutoSuggestBoxSuggestionChosenEventArgs(::Windows::UI::Xaml::Controls::AutoSuggestBoxSuggestionChosenEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::AutoSuggestBoxSuggestionChosenEventArgs^ UnwrapAutoSuggestBoxSuggestionChosenEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapAutoSuggestBoxTextChangedEventArgs(::Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs^ UnwrapAutoSuggestBoxTextChangedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapCleanUpVirtualizedItemEventArgs(::Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventArgs^ UnwrapCleanUpVirtualizedItemEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapContextMenuEventArgs(::Windows::UI::Xaml::Controls::ContextMenuEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ContextMenuEventArgs^ UnwrapContextMenuEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapItemClickEventArgs(::Windows::UI::Xaml::Controls::ItemClickEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ItemClickEventArgs^ UnwrapItemClickEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapSelectionChangedEventArgs(::Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ UnwrapSelectionChangedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapTextChangedEventArgs(::Windows::UI::Xaml::Controls::TextChangedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::TextChangedEventArgs^ UnwrapTextChangedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapItemsPanelTemplate(::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ UnwrapItemsPanelTemplate(Local<Value> value);
  
  v8::Local<v8::Value> WrapPanel(::Windows::UI::Xaml::Controls::Panel^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::Panel^ UnwrapPanel(Local<Value> value);
  
  v8::Local<v8::Value> WrapBorder(::Windows::UI::Xaml::Controls::Border^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::Border^ UnwrapBorder(Local<Value> value);
  
  v8::Local<v8::Value> WrapCaptureElement(::Windows::UI::Xaml::Controls::CaptureElement^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::CaptureElement^ UnwrapCaptureElement(Local<Value> value);
  
  v8::Local<v8::Value> WrapContentPresenter(::Windows::UI::Xaml::Controls::ContentPresenter^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ContentPresenter^ UnwrapContentPresenter(Local<Value> value);
  
  v8::Local<v8::Value> WrapImage(::Windows::UI::Xaml::Controls::Image^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::Image^ UnwrapImage(Local<Value> value);
  
  v8::Local<v8::Value> WrapItemsPresenter(::Windows::UI::Xaml::Controls::ItemsPresenter^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ItemsPresenter^ UnwrapItemsPresenter(Local<Value> value);
  
  v8::Local<v8::Value> WrapRichTextBlockOverflow(::Windows::UI::Xaml::Controls::RichTextBlockOverflow^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::RichTextBlockOverflow^ UnwrapRichTextBlockOverflow(Local<Value> value);
  
  v8::Local<v8::Value> WrapRichTextBlock(::Windows::UI::Xaml::Controls::RichTextBlock^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::RichTextBlock^ UnwrapRichTextBlock(Local<Value> value);
  
  v8::Local<v8::Value> WrapTextBlock(::Windows::UI::Xaml::Controls::TextBlock^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::TextBlock^ UnwrapTextBlock(Local<Value> value);
  
  v8::Local<v8::Value> WrapViewbox(::Windows::UI::Xaml::Controls::Viewbox^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::Viewbox^ UnwrapViewbox(Local<Value> value);
  
  v8::Local<v8::Value> WrapCanvas(::Windows::UI::Xaml::Controls::Canvas^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::Canvas^ UnwrapCanvas(Local<Value> value);
  
  v8::Local<v8::Value> WrapGrid(::Windows::UI::Xaml::Controls::Grid^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::Grid^ UnwrapGrid(Local<Value> value);
  
  v8::Local<v8::Value> WrapRelativePanel(::Windows::UI::Xaml::Controls::RelativePanel^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::RelativePanel^ UnwrapRelativePanel(Local<Value> value);
  
  v8::Local<v8::Value> WrapStackPanel(::Windows::UI::Xaml::Controls::StackPanel^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::StackPanel^ UnwrapStackPanel(Local<Value> value);
  
  v8::Local<v8::Value> WrapVariableSizedWrapGrid(::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^ UnwrapVariableSizedWrapGrid(Local<Value> value);
  
  v8::Local<v8::Value> WrapVirtualizingPanel(::Windows::UI::Xaml::Controls::VirtualizingPanel^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::VirtualizingPanel^ UnwrapVirtualizingPanel(Local<Value> value);
  
  v8::Local<v8::Value> WrapVirtualizingStackPanel(::Windows::UI::Xaml::Controls::VirtualizingStackPanel^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::VirtualizingStackPanel^ UnwrapVirtualizingStackPanel(Local<Value> value);
  
  v8::Local<v8::Value> WrapIconElement(::Windows::UI::Xaml::Controls::IconElement^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::IconElement^ UnwrapIconElement(Local<Value> value);
  
  v8::Local<v8::Value> WrapInkCanvas(::Windows::UI::Xaml::Controls::InkCanvas^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::InkCanvas^ UnwrapInkCanvas(Local<Value> value);
  
  v8::Local<v8::Value> WrapMediaElement(::Windows::UI::Xaml::Controls::MediaElement^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::MediaElement^ UnwrapMediaElement(Local<Value> value);
  
  v8::Local<v8::Value> WrapMediaPlayerPresenter(::Windows::UI::Xaml::Controls::MediaPlayerPresenter^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::MediaPlayerPresenter^ UnwrapMediaPlayerPresenter(Local<Value> value);
  
  v8::Local<v8::Value> WrapWebView(::Windows::UI::Xaml::Controls::WebView^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::WebView^ UnwrapWebView(Local<Value> value);
  
  v8::Local<v8::Value> WrapBitmapIcon(::Windows::UI::Xaml::Controls::BitmapIcon^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::BitmapIcon^ UnwrapBitmapIcon(Local<Value> value);
  
  v8::Local<v8::Value> WrapFontIcon(::Windows::UI::Xaml::Controls::FontIcon^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::FontIcon^ UnwrapFontIcon(Local<Value> value);
  
  v8::Local<v8::Value> WrapItemsStackPanel(::Windows::UI::Xaml::Controls::ItemsStackPanel^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ItemsStackPanel^ UnwrapItemsStackPanel(Local<Value> value);
  
  v8::Local<v8::Value> WrapItemsWrapGrid(::Windows::UI::Xaml::Controls::ItemsWrapGrid^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ItemsWrapGrid^ UnwrapItemsWrapGrid(Local<Value> value);
  
  v8::Local<v8::Value> WrapPathIcon(::Windows::UI::Xaml::Controls::PathIcon^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::PathIcon^ UnwrapPathIcon(Local<Value> value);
  
  v8::Local<v8::Value> WrapScrollContentPresenter(::Windows::UI::Xaml::Controls::ScrollContentPresenter^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ScrollContentPresenter^ UnwrapScrollContentPresenter(Local<Value> value);
  
  v8::Local<v8::Value> WrapSymbolIcon(::Windows::UI::Xaml::Controls::SymbolIcon^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::SymbolIcon^ UnwrapSymbolIcon(Local<Value> value);
  
  v8::Local<v8::Value> WrapSwapChainBackgroundPanel(::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^ UnwrapSwapChainBackgroundPanel(Local<Value> value);
  
  v8::Local<v8::Value> WrapSwapChainPanel(::Windows::UI::Xaml::Controls::SwapChainPanel^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::SwapChainPanel^ UnwrapSwapChainPanel(Local<Value> value);
  
  v8::Local<v8::Value> WrapWrapGrid(::Windows::UI::Xaml::Controls::WrapGrid^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::WrapGrid^ UnwrapWrapGrid(Local<Value> value);
  
  v8::Local<v8::Value> WrapFocusDisengagedEventArgs(::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ UnwrapFocusDisengagedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapFocusEngagedEventArgs(::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ UnwrapFocusEngagedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapControlTemplate(::Windows::UI::Xaml::Controls::ControlTemplate^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ControlTemplate^ UnwrapControlTemplate(Local<Value> value);
  
  v8::Local<v8::Value> WrapControl(::Windows::UI::Xaml::Controls::Control^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::Control^ UnwrapControl(Local<Value> value);
  
  v8::Local<v8::Value> WrapSemanticZoom(::Windows::UI::Xaml::Controls::SemanticZoom^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::SemanticZoom^ UnwrapSemanticZoom(Local<Value> value);
  
  v8::Local<v8::Value> WrapContentControl(::Windows::UI::Xaml::Controls::ContentControl^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ContentControl^ UnwrapContentControl(Local<Value> value);
  
  v8::Local<v8::Value> WrapListViewBaseHeaderItem(::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^ UnwrapListViewBaseHeaderItem(Local<Value> value);
  
  v8::Local<v8::Value> WrapItemsControl(::Windows::UI::Xaml::Controls::ItemsControl^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ItemsControl^ UnwrapItemsControl(Local<Value> value);
  
  v8::Local<v8::Value> WrapMediaTransportControls(::Windows::UI::Xaml::Controls::MediaTransportControls^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::MediaTransportControls^ UnwrapMediaTransportControls(Local<Value> value);
  
  v8::Local<v8::Value> WrapPasswordBox(::Windows::UI::Xaml::Controls::PasswordBox^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::PasswordBox^ UnwrapPasswordBox(Local<Value> value);
  
  v8::Local<v8::Value> WrapProgressRing(::Windows::UI::Xaml::Controls::ProgressRing^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ProgressRing^ UnwrapProgressRing(Local<Value> value);
  
  v8::Local<v8::Value> WrapTextBox(::Windows::UI::Xaml::Controls::TextBox^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::TextBox^ UnwrapTextBox(Local<Value> value);
  
  v8::Local<v8::Value> WrapToggleSwitch(::Windows::UI::Xaml::Controls::ToggleSwitch^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ToggleSwitch^ UnwrapToggleSwitch(Local<Value> value);
  
  v8::Local<v8::Value> WrapUserControl(::Windows::UI::Xaml::Controls::UserControl^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::UserControl^ UnwrapUserControl(Local<Value> value);
  
  v8::Local<v8::Value> WrapGroupItem(::Windows::UI::Xaml::Controls::GroupItem^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::GroupItem^ UnwrapGroupItem(Local<Value> value);
  
  v8::Local<v8::Value> WrapSettingsFlyout(::Windows::UI::Xaml::Controls::SettingsFlyout^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::SettingsFlyout^ UnwrapSettingsFlyout(Local<Value> value);
  
  v8::Local<v8::Value> WrapToolTip(::Windows::UI::Xaml::Controls::ToolTip^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ToolTip^ UnwrapToolTip(Local<Value> value);
  
  v8::Local<v8::Value> WrapComboBoxItem(::Windows::UI::Xaml::Controls::ComboBoxItem^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ComboBoxItem^ UnwrapComboBoxItem(Local<Value> value);
  
  v8::Local<v8::Value> WrapFlipViewItem(::Windows::UI::Xaml::Controls::FlipViewItem^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::FlipViewItem^ UnwrapFlipViewItem(Local<Value> value);
  
  v8::Local<v8::Value> WrapListBoxItem(::Windows::UI::Xaml::Controls::ListBoxItem^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ListBoxItem^ UnwrapListBoxItem(Local<Value> value);
  
  v8::Local<v8::Value> WrapProgressBar(::Windows::UI::Xaml::Controls::ProgressBar^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ProgressBar^ UnwrapProgressBar(Local<Value> value);
  
  v8::Local<v8::Value> WrapSlider(::Windows::UI::Xaml::Controls::Slider^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::Slider^ UnwrapSlider(Local<Value> value);
  
  v8::Local<v8::Value> WrapButton(::Windows::UI::Xaml::Controls::Button^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::Button^ UnwrapButton(Local<Value> value);
  
  v8::Local<v8::Value> WrapHyperlinkButton(::Windows::UI::Xaml::Controls::HyperlinkButton^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::HyperlinkButton^ UnwrapHyperlinkButton(Local<Value> value);
  
  v8::Local<v8::Value> WrapListViewBase(::Windows::UI::Xaml::Controls::ListViewBase^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ListViewBase^ UnwrapListViewBase(Local<Value> value);
  
  v8::Local<v8::Value> WrapComboBox(::Windows::UI::Xaml::Controls::ComboBox^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ComboBox^ UnwrapComboBox(Local<Value> value);
  
  v8::Local<v8::Value> WrapFlipView(::Windows::UI::Xaml::Controls::FlipView^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::FlipView^ UnwrapFlipView(Local<Value> value);
  
  v8::Local<v8::Value> WrapListBox(::Windows::UI::Xaml::Controls::ListBox^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ListBox^ UnwrapListBox(Local<Value> value);
  
  v8::Local<v8::Value> WrapCheckBox(::Windows::UI::Xaml::Controls::CheckBox^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::CheckBox^ UnwrapCheckBox(Local<Value> value);
  
  v8::Local<v8::Value> WrapRadioButton(::Windows::UI::Xaml::Controls::RadioButton^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::RadioButton^ UnwrapRadioButton(Local<Value> value);
  
  v8::Local<v8::Value> WrapCalendarView(::Windows::UI::Xaml::Controls::CalendarView^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::CalendarView^ UnwrapCalendarView(Local<Value> value);
  
  v8::Local<v8::Value> WrapCalendarViewDayItem(::Windows::UI::Xaml::Controls::CalendarViewDayItem^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::CalendarViewDayItem^ UnwrapCalendarViewDayItem(Local<Value> value);
  
  v8::Local<v8::Value> WrapHubSection(::Windows::UI::Xaml::Controls::HubSection^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::HubSection^ UnwrapHubSection(Local<Value> value);
  
  v8::Local<v8::Value> WrapMenuFlyoutItemBase(::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^ UnwrapMenuFlyoutItemBase(Local<Value> value);
  
  v8::Local<v8::Value> WrapAppBarSeparator(::Windows::UI::Xaml::Controls::AppBarSeparator^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::AppBarSeparator^ UnwrapAppBarSeparator(Local<Value> value);
  
  v8::Local<v8::Value> WrapCalendarDatePicker(::Windows::UI::Xaml::Controls::CalendarDatePicker^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::CalendarDatePicker^ UnwrapCalendarDatePicker(Local<Value> value);
  
  v8::Local<v8::Value> WrapDatePicker(::Windows::UI::Xaml::Controls::DatePicker^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::DatePicker^ UnwrapDatePicker(Local<Value> value);
  
  v8::Local<v8::Value> WrapHub(::Windows::UI::Xaml::Controls::Hub^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::Hub^ UnwrapHub(Local<Value> value);
  
  v8::Local<v8::Value> WrapMediaPlayerElement(::Windows::UI::Xaml::Controls::MediaPlayerElement^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::MediaPlayerElement^ UnwrapMediaPlayerElement(Local<Value> value);
  
  v8::Local<v8::Value> WrapRichEditBox(::Windows::UI::Xaml::Controls::RichEditBox^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::RichEditBox^ UnwrapRichEditBox(Local<Value> value);
  
  v8::Local<v8::Value> WrapSearchBox(::Windows::UI::Xaml::Controls::SearchBox^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::SearchBox^ UnwrapSearchBox(Local<Value> value);
  
  v8::Local<v8::Value> WrapSplitView(::Windows::UI::Xaml::Controls::SplitView^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::SplitView^ UnwrapSplitView(Local<Value> value);
  
  v8::Local<v8::Value> WrapTimePicker(::Windows::UI::Xaml::Controls::TimePicker^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::TimePicker^ UnwrapTimePicker(Local<Value> value);
  
  v8::Local<v8::Value> WrapAppBar(::Windows::UI::Xaml::Controls::AppBar^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::AppBar^ UnwrapAppBar(Local<Value> value);
  
  v8::Local<v8::Value> WrapAutoSuggestBox(::Windows::UI::Xaml::Controls::AutoSuggestBox^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::AutoSuggestBox^ UnwrapAutoSuggestBox(Local<Value> value);
  
  v8::Local<v8::Value> WrapCommandBarOverflowPresenter(::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^ UnwrapCommandBarOverflowPresenter(Local<Value> value);
  
  v8::Local<v8::Value> WrapContentDialog(::Windows::UI::Xaml::Controls::ContentDialog^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ContentDialog^ UnwrapContentDialog(Local<Value> value);
  
  v8::Local<v8::Value> WrapFlyoutPresenter(::Windows::UI::Xaml::Controls::FlyoutPresenter^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::FlyoutPresenter^ UnwrapFlyoutPresenter(Local<Value> value);
  
  v8::Local<v8::Value> WrapFrame(::Windows::UI::Xaml::Controls::Frame^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::Frame^ UnwrapFrame(Local<Value> value);
  
  v8::Local<v8::Value> WrapMenuFlyoutItem(::Windows::UI::Xaml::Controls::MenuFlyoutItem^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::MenuFlyoutItem^ UnwrapMenuFlyoutItem(Local<Value> value);
  
  v8::Local<v8::Value> WrapMenuFlyoutPresenter(::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^ UnwrapMenuFlyoutPresenter(Local<Value> value);
  
  v8::Local<v8::Value> WrapMenuFlyoutSeparator(::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^ UnwrapMenuFlyoutSeparator(Local<Value> value);
  
  v8::Local<v8::Value> WrapMenuFlyoutSubItem(::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^ UnwrapMenuFlyoutSubItem(Local<Value> value);
  
  v8::Local<v8::Value> WrapPage(::Windows::UI::Xaml::Controls::Page^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::Page^ UnwrapPage(Local<Value> value);
  
  v8::Local<v8::Value> WrapScrollViewer(::Windows::UI::Xaml::Controls::ScrollViewer^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ScrollViewer^ UnwrapScrollViewer(Local<Value> value);
  
  v8::Local<v8::Value> WrapCommandBar(::Windows::UI::Xaml::Controls::CommandBar^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::CommandBar^ UnwrapCommandBar(Local<Value> value);
  
  v8::Local<v8::Value> WrapGridViewHeaderItem(::Windows::UI::Xaml::Controls::GridViewHeaderItem^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::GridViewHeaderItem^ UnwrapGridViewHeaderItem(Local<Value> value);
  
  v8::Local<v8::Value> WrapGridViewItem(::Windows::UI::Xaml::Controls::GridViewItem^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::GridViewItem^ UnwrapGridViewItem(Local<Value> value);
  
  v8::Local<v8::Value> WrapListViewHeaderItem(::Windows::UI::Xaml::Controls::ListViewHeaderItem^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ListViewHeaderItem^ UnwrapListViewHeaderItem(Local<Value> value);
  
  v8::Local<v8::Value> WrapListViewItem(::Windows::UI::Xaml::Controls::ListViewItem^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ListViewItem^ UnwrapListViewItem(Local<Value> value);
  
  v8::Local<v8::Value> WrapToggleMenuFlyoutItem(::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^ UnwrapToggleMenuFlyoutItem(Local<Value> value);
  
  v8::Local<v8::Value> WrapAppBarButton(::Windows::UI::Xaml::Controls::AppBarButton^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::AppBarButton^ UnwrapAppBarButton(Local<Value> value);
  
  v8::Local<v8::Value> WrapAppBarToggleButton(::Windows::UI::Xaml::Controls::AppBarToggleButton^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::AppBarToggleButton^ UnwrapAppBarToggleButton(Local<Value> value);
  
  v8::Local<v8::Value> WrapGridView(::Windows::UI::Xaml::Controls::GridView^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::GridView^ UnwrapGridView(Local<Value> value);
  
  v8::Local<v8::Value> WrapListView(::Windows::UI::Xaml::Controls::ListView^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ListView^ UnwrapListView(Local<Value> value);
  
  v8::Local<v8::Value> WrapFlyout(::Windows::UI::Xaml::Controls::Flyout^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::Flyout^ UnwrapFlyout(Local<Value> value);
  
  v8::Local<v8::Value> WrapMenuFlyout(::Windows::UI::Xaml::Controls::MenuFlyout^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::MenuFlyout^ UnwrapMenuFlyout(Local<Value> value);
  
  v8::Local<v8::Value> WrapWebViewBrush(::Windows::UI::Xaml::Controls::WebViewBrush^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::WebViewBrush^ UnwrapWebViewBrush(Local<Value> value);
  
  v8::Local<v8::Value> WrapInkToolbarIsStencilButtonCheckedChangedEventArgs(::Windows::UI::Xaml::Controls::InkToolbarIsStencilButtonCheckedChangedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::InkToolbarIsStencilButtonCheckedChangedEventArgs^ UnwrapInkToolbarIsStencilButtonCheckedChangedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapInkToolbarCustomPen(::Windows::UI::Xaml::Controls::InkToolbarCustomPen^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::InkToolbarCustomPen^ UnwrapInkToolbarCustomPen(Local<Value> value);
  
  v8::Local<v8::Value> WrapInkToolbar(::Windows::UI::Xaml::Controls::InkToolbar^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::InkToolbar^ UnwrapInkToolbar(Local<Value> value);
  
  v8::Local<v8::Value> WrapInkToolbarPenConfigurationControl(::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^ UnwrapInkToolbarPenConfigurationControl(Local<Value> value);
  
  v8::Local<v8::Value> WrapInkToolbarFlyoutItem(::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^ UnwrapInkToolbarFlyoutItem(Local<Value> value);
  
  v8::Local<v8::Value> WrapInkToolbarMenuButton(::Windows::UI::Xaml::Controls::InkToolbarMenuButton^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::InkToolbarMenuButton^ UnwrapInkToolbarMenuButton(Local<Value> value);
  
  v8::Local<v8::Value> WrapInkToolbarStencilButton(::Windows::UI::Xaml::Controls::InkToolbarStencilButton^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::InkToolbarStencilButton^ UnwrapInkToolbarStencilButton(Local<Value> value);
  
  v8::Local<v8::Value> WrapInkToolbarToggleButton(::Windows::UI::Xaml::Controls::InkToolbarToggleButton^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::InkToolbarToggleButton^ UnwrapInkToolbarToggleButton(Local<Value> value);
  
  v8::Local<v8::Value> WrapInkToolbarToolButton(::Windows::UI::Xaml::Controls::InkToolbarToolButton^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::InkToolbarToolButton^ UnwrapInkToolbarToolButton(Local<Value> value);
  
  v8::Local<v8::Value> WrapInkToolbarCustomToggleButton(::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^ UnwrapInkToolbarCustomToggleButton(Local<Value> value);
  
  v8::Local<v8::Value> WrapInkToolbarCustomToolButton(::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^ UnwrapInkToolbarCustomToolButton(Local<Value> value);
  
  v8::Local<v8::Value> WrapInkToolbarEraserButton(::Windows::UI::Xaml::Controls::InkToolbarEraserButton^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::InkToolbarEraserButton^ UnwrapInkToolbarEraserButton(Local<Value> value);
  
  v8::Local<v8::Value> WrapInkToolbarPenButton(::Windows::UI::Xaml::Controls::InkToolbarPenButton^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::InkToolbarPenButton^ UnwrapInkToolbarPenButton(Local<Value> value);
  
  v8::Local<v8::Value> WrapInkToolbarRulerButton(::Windows::UI::Xaml::Controls::InkToolbarRulerButton^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::InkToolbarRulerButton^ UnwrapInkToolbarRulerButton(Local<Value> value);
  
  v8::Local<v8::Value> WrapInkToolbarBallpointPenButton(::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^ UnwrapInkToolbarBallpointPenButton(Local<Value> value);
  
  v8::Local<v8::Value> WrapInkToolbarCustomPenButton(::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^ UnwrapInkToolbarCustomPenButton(Local<Value> value);
  
  v8::Local<v8::Value> WrapInkToolbarHighlighterButton(::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^ UnwrapInkToolbarHighlighterButton(Local<Value> value);
  
  v8::Local<v8::Value> WrapInkToolbarPencilButton(::Windows::UI::Xaml::Controls::InkToolbarPencilButton^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::InkToolbarPencilButton^ UnwrapInkToolbarPencilButton(Local<Value> value);
  
  v8::Local<v8::Value> WrapPivotItemEventArgs(::Windows::UI::Xaml::Controls::PivotItemEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::PivotItemEventArgs^ UnwrapPivotItemEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapDatePickedEventArgs(::Windows::UI::Xaml::Controls::DatePickedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::DatePickedEventArgs^ UnwrapDatePickedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapDatePickerFlyoutItem(::Windows::UI::Xaml::Controls::DatePickerFlyoutItem^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::DatePickerFlyoutItem^ UnwrapDatePickerFlyoutItem(Local<Value> value);
  
  v8::Local<v8::Value> WrapItemsPickedEventArgs(::Windows::UI::Xaml::Controls::ItemsPickedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ItemsPickedEventArgs^ UnwrapItemsPickedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapPickerConfirmedEventArgs(::Windows::UI::Xaml::Controls::PickerConfirmedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::PickerConfirmedEventArgs^ UnwrapPickerConfirmedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapTimePickedEventArgs(::Windows::UI::Xaml::Controls::TimePickedEventArgs^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::TimePickedEventArgs^ UnwrapTimePickedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapDatePickerFlyoutPresenter(::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^ UnwrapDatePickerFlyoutPresenter(Local<Value> value);
  
  v8::Local<v8::Value> WrapListPickerFlyoutPresenter(::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^ UnwrapListPickerFlyoutPresenter(Local<Value> value);
  
  v8::Local<v8::Value> WrapTimePickerFlyoutPresenter(::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^ UnwrapTimePickerFlyoutPresenter(Local<Value> value);
  
  v8::Local<v8::Value> WrapPickerFlyoutPresenter(::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^ UnwrapPickerFlyoutPresenter(Local<Value> value);
  
  v8::Local<v8::Value> WrapPivot(::Windows::UI::Xaml::Controls::Pivot^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::Pivot^ UnwrapPivot(Local<Value> value);
  
  v8::Local<v8::Value> WrapPivotItem(::Windows::UI::Xaml::Controls::PivotItem^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::PivotItem^ UnwrapPivotItem(Local<Value> value);
  
  v8::Local<v8::Value> WrapDatePickerFlyout(::Windows::UI::Xaml::Controls::DatePickerFlyout^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::DatePickerFlyout^ UnwrapDatePickerFlyout(Local<Value> value);
  
  v8::Local<v8::Value> WrapListPickerFlyout(::Windows::UI::Xaml::Controls::ListPickerFlyout^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::ListPickerFlyout^ UnwrapListPickerFlyout(Local<Value> value);
  
  v8::Local<v8::Value> WrapPickerFlyout(::Windows::UI::Xaml::Controls::PickerFlyout^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::PickerFlyout^ UnwrapPickerFlyout(Local<Value> value);
  
  v8::Local<v8::Value> WrapTimePickerFlyout(::Windows::UI::Xaml::Controls::TimePickerFlyout^ wintRtInstance);
  ::Windows::UI::Xaml::Controls::TimePickerFlyout^ UnwrapTimePickerFlyout(Local<Value> value);
  



  static void InitCandidateWindowAlignmentEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("CandidateWindowAlignment").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("default").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::CandidateWindowAlignment::Default)));
    Nan::Set(enumObject, Nan::New<String>("bottomEdge").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::CandidateWindowAlignment::BottomEdge)));
  }

  static void InitClickModeEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("ClickMode").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("release").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ClickMode::Release)));
    Nan::Set(enumObject, Nan::New<String>("press").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ClickMode::Press)));
    Nan::Set(enumObject, Nan::New<String>("hover").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ClickMode::Hover)));
  }

  static void InitComboBoxSelectionChangedTriggerEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("ComboBoxSelectionChangedTrigger").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("committed").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ComboBoxSelectionChangedTrigger::Committed)));
    Nan::Set(enumObject, Nan::New<String>("always").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ComboBoxSelectionChangedTrigger::Always)));
  }

  static void InitIncrementalLoadingTriggerEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("IncrementalLoadingTrigger").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("none").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::IncrementalLoadingTrigger::None)));
    Nan::Set(enumObject, Nan::New<String>("edge").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::IncrementalLoadingTrigger::Edge)));
  }

  static void InitItemsUpdatingScrollModeEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("ItemsUpdatingScrollMode").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("keepItemsInView").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ItemsUpdatingScrollMode::KeepItemsInView)));
    Nan::Set(enumObject, Nan::New<String>("keepScrollOffset").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ItemsUpdatingScrollMode::KeepScrollOffset)));
    Nan::Set(enumObject, Nan::New<String>("keepLastItemInView").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ItemsUpdatingScrollMode::KeepLastItemInView)));
  }

  static void InitListViewReorderModeEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("ListViewReorderMode").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("disabled").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ListViewReorderMode::Disabled)));
    Nan::Set(enumObject, Nan::New<String>("enabled").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ListViewReorderMode::Enabled)));
  }

  static void InitListViewSelectionModeEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("ListViewSelectionMode").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("none").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ListViewSelectionMode::None)));
    Nan::Set(enumObject, Nan::New<String>("single").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ListViewSelectionMode::Single)));
    Nan::Set(enumObject, Nan::New<String>("multiple").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ListViewSelectionMode::Multiple)));
    Nan::Set(enumObject, Nan::New<String>("extended").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ListViewSelectionMode::Extended)));
  }

  static void InitOrientationEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("Orientation").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("vertical").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Orientation::Vertical)));
    Nan::Set(enumObject, Nan::New<String>("horizontal").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Orientation::Horizontal)));
  }

  static void InitPanelScrollingDirectionEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("PanelScrollingDirection").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("none").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::PanelScrollingDirection::None)));
    Nan::Set(enumObject, Nan::New<String>("forward").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::PanelScrollingDirection::Forward)));
    Nan::Set(enumObject, Nan::New<String>("backward").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::PanelScrollingDirection::Backward)));
  }

  static void InitPasswordRevealModeEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("PasswordRevealMode").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("peek").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::PasswordRevealMode::Peek)));
    Nan::Set(enumObject, Nan::New<String>("hidden").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::PasswordRevealMode::Hidden)));
    Nan::Set(enumObject, Nan::New<String>("visible").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::PasswordRevealMode::Visible)));
  }

  static void InitRichEditClipboardFormatEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("RichEditClipboardFormat").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("allFormats").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::RichEditClipboardFormat::AllFormats)));
    Nan::Set(enumObject, Nan::New<String>("plainText").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::RichEditClipboardFormat::PlainText)));
  }

  static void InitScrollBarVisibilityEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("ScrollBarVisibility").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("disabled").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ScrollBarVisibility::Disabled)));
    Nan::Set(enumObject, Nan::New<String>("auto").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ScrollBarVisibility::Auto)));
    Nan::Set(enumObject, Nan::New<String>("hidden").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ScrollBarVisibility::Hidden)));
    Nan::Set(enumObject, Nan::New<String>("visible").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ScrollBarVisibility::Visible)));
  }

  static void InitScrollIntoViewAlignmentEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("ScrollIntoViewAlignment").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("default").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ScrollIntoViewAlignment::Default)));
    Nan::Set(enumObject, Nan::New<String>("leading").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ScrollIntoViewAlignment::Leading)));
  }

  static void InitScrollModeEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("ScrollMode").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("disabled").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ScrollMode::Disabled)));
    Nan::Set(enumObject, Nan::New<String>("enabled").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ScrollMode::Enabled)));
    Nan::Set(enumObject, Nan::New<String>("auto").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ScrollMode::Auto)));
  }

  static void InitSelectionModeEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("SelectionMode").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("single").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::SelectionMode::Single)));
    Nan::Set(enumObject, Nan::New<String>("multiple").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::SelectionMode::Multiple)));
    Nan::Set(enumObject, Nan::New<String>("extended").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::SelectionMode::Extended)));
  }

  static void InitSnapPointsTypeEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("SnapPointsType").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("none").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::SnapPointsType::None)));
    Nan::Set(enumObject, Nan::New<String>("optional").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::SnapPointsType::Optional)));
    Nan::Set(enumObject, Nan::New<String>("mandatory").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::SnapPointsType::Mandatory)));
    Nan::Set(enumObject, Nan::New<String>("optionalSingle").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::SnapPointsType::OptionalSingle)));
    Nan::Set(enumObject, Nan::New<String>("mandatorySingle").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::SnapPointsType::MandatorySingle)));
  }

  static void InitStretchDirectionEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("StretchDirection").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("upOnly").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::StretchDirection::UpOnly)));
    Nan::Set(enumObject, Nan::New<String>("downOnly").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::StretchDirection::DownOnly)));
    Nan::Set(enumObject, Nan::New<String>("both").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::StretchDirection::Both)));
  }

  static void InitVirtualizationModeEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("VirtualizationMode").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("standard").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::VirtualizationMode::Standard)));
    Nan::Set(enumObject, Nan::New<String>("recycling").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::VirtualizationMode::Recycling)));
  }

  static void InitZoomModeEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("ZoomMode").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("disabled").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ZoomMode::Disabled)));
    Nan::Set(enumObject, Nan::New<String>("enabled").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ZoomMode::Enabled)));
  }

  static void InitAppBarClosedDisplayModeEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("AppBarClosedDisplayMode").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("compact").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::AppBarClosedDisplayMode::Compact)));
    Nan::Set(enumObject, Nan::New<String>("minimal").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::AppBarClosedDisplayMode::Minimal)));
    Nan::Set(enumObject, Nan::New<String>("hidden").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::AppBarClosedDisplayMode::Hidden)));
  }

  static void InitAutoSuggestionBoxTextChangeReasonEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("AutoSuggestionBoxTextChangeReason").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("userInput").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::AutoSuggestionBoxTextChangeReason::UserInput)));
    Nan::Set(enumObject, Nan::New<String>("programmaticChange").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::AutoSuggestionBoxTextChangeReason::ProgrammaticChange)));
    Nan::Set(enumObject, Nan::New<String>("suggestionChosen").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::AutoSuggestionBoxTextChangeReason::SuggestionChosen)));
  }

  static void InitCalendarViewDisplayModeEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("CalendarViewDisplayMode").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("month").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::CalendarViewDisplayMode::Month)));
    Nan::Set(enumObject, Nan::New<String>("year").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::CalendarViewDisplayMode::Year)));
    Nan::Set(enumObject, Nan::New<String>("decade").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::CalendarViewDisplayMode::Decade)));
  }

  static void InitCalendarViewSelectionModeEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("CalendarViewSelectionMode").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("none").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::CalendarViewSelectionMode::None)));
    Nan::Set(enumObject, Nan::New<String>("single").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::CalendarViewSelectionMode::Single)));
    Nan::Set(enumObject, Nan::New<String>("multiple").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::CalendarViewSelectionMode::Multiple)));
  }

  static void InitCommandBarDefaultLabelPositionEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("CommandBarDefaultLabelPosition").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("bottom").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::CommandBarDefaultLabelPosition::Bottom)));
    Nan::Set(enumObject, Nan::New<String>("right").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::CommandBarDefaultLabelPosition::Right)));
    Nan::Set(enumObject, Nan::New<String>("collapsed").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::CommandBarDefaultLabelPosition::Collapsed)));
  }

  static void InitCommandBarDynamicOverflowActionEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("CommandBarDynamicOverflowAction").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("addingToOverflow").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::CommandBarDynamicOverflowAction::AddingToOverflow)));
    Nan::Set(enumObject, Nan::New<String>("removingFromOverflow").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::CommandBarDynamicOverflowAction::RemovingFromOverflow)));
  }

  static void InitCommandBarLabelPositionEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("CommandBarLabelPosition").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("default").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::CommandBarLabelPosition::Default)));
    Nan::Set(enumObject, Nan::New<String>("collapsed").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::CommandBarLabelPosition::Collapsed)));
  }

  static void InitCommandBarOverflowButtonVisibilityEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("CommandBarOverflowButtonVisibility").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("auto").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::CommandBarOverflowButtonVisibility::Auto)));
    Nan::Set(enumObject, Nan::New<String>("visible").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::CommandBarOverflowButtonVisibility::Visible)));
    Nan::Set(enumObject, Nan::New<String>("collapsed").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::CommandBarOverflowButtonVisibility::Collapsed)));
  }

  static void InitContentDialogButtonEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("ContentDialogButton").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("none").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ContentDialogButton::None)));
    Nan::Set(enumObject, Nan::New<String>("primary").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ContentDialogButton::Primary)));
    Nan::Set(enumObject, Nan::New<String>("secondary").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ContentDialogButton::Secondary)));
    Nan::Set(enumObject, Nan::New<String>("close").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ContentDialogButton::Close)));
  }

  static void InitContentDialogResultEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("ContentDialogResult").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("none").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ContentDialogResult::None)));
    Nan::Set(enumObject, Nan::New<String>("primary").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ContentDialogResult::Primary)));
    Nan::Set(enumObject, Nan::New<String>("secondary").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ContentDialogResult::Secondary)));
  }

  static void InitSplitViewDisplayModeEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("SplitViewDisplayMode").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("overlay").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::SplitViewDisplayMode::Overlay)));
    Nan::Set(enumObject, Nan::New<String>("inline").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::SplitViewDisplayMode::Inline)));
    Nan::Set(enumObject, Nan::New<String>("compactOverlay").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::SplitViewDisplayMode::CompactOverlay)));
    Nan::Set(enumObject, Nan::New<String>("compactInline").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::SplitViewDisplayMode::CompactInline)));
  }

  static void InitSplitViewPanePlacementEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("SplitViewPanePlacement").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("left").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::SplitViewPanePlacement::Left)));
    Nan::Set(enumObject, Nan::New<String>("right").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::SplitViewPanePlacement::Right)));
  }

  static void InitSymbolEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("Symbol").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("previous").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Previous)));
    Nan::Set(enumObject, Nan::New<String>("next").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Next)));
    Nan::Set(enumObject, Nan::New<String>("play").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Play)));
    Nan::Set(enumObject, Nan::New<String>("pause").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Pause)));
    Nan::Set(enumObject, Nan::New<String>("edit").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Edit)));
    Nan::Set(enumObject, Nan::New<String>("save").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Save)));
    Nan::Set(enumObject, Nan::New<String>("clear").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Clear)));
    Nan::Set(enumObject, Nan::New<String>("delete").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Delete)));
    Nan::Set(enumObject, Nan::New<String>("remove").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Remove)));
    Nan::Set(enumObject, Nan::New<String>("add").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Add)));
    Nan::Set(enumObject, Nan::New<String>("cancel").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Cancel)));
    Nan::Set(enumObject, Nan::New<String>("accept").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Accept)));
    Nan::Set(enumObject, Nan::New<String>("more").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::More)));
    Nan::Set(enumObject, Nan::New<String>("redo").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Redo)));
    Nan::Set(enumObject, Nan::New<String>("undo").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Undo)));
    Nan::Set(enumObject, Nan::New<String>("home").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Home)));
    Nan::Set(enumObject, Nan::New<String>("up").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Up)));
    Nan::Set(enumObject, Nan::New<String>("forward").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Forward)));
    Nan::Set(enumObject, Nan::New<String>("back").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Back)));
    Nan::Set(enumObject, Nan::New<String>("favorite").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Favorite)));
    Nan::Set(enumObject, Nan::New<String>("camera").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Camera)));
    Nan::Set(enumObject, Nan::New<String>("setting").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Setting)));
    Nan::Set(enumObject, Nan::New<String>("video").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Video)));
    Nan::Set(enumObject, Nan::New<String>("sync").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Sync)));
    Nan::Set(enumObject, Nan::New<String>("download").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Download)));
    Nan::Set(enumObject, Nan::New<String>("mail").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Mail)));
    Nan::Set(enumObject, Nan::New<String>("find").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Find)));
    Nan::Set(enumObject, Nan::New<String>("help").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Help)));
    Nan::Set(enumObject, Nan::New<String>("upload").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Upload)));
    Nan::Set(enumObject, Nan::New<String>("emoji").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Emoji)));
    Nan::Set(enumObject, Nan::New<String>("twoPage").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::TwoPage)));
    Nan::Set(enumObject, Nan::New<String>("leaveChat").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::LeaveChat)));
    Nan::Set(enumObject, Nan::New<String>("mailForward").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::MailForward)));
    Nan::Set(enumObject, Nan::New<String>("clock").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Clock)));
    Nan::Set(enumObject, Nan::New<String>("send").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Send)));
    Nan::Set(enumObject, Nan::New<String>("crop").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Crop)));
    Nan::Set(enumObject, Nan::New<String>("rotateCamera").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::RotateCamera)));
    Nan::Set(enumObject, Nan::New<String>("people").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::People)));
    Nan::Set(enumObject, Nan::New<String>("openPane").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::OpenPane)));
    Nan::Set(enumObject, Nan::New<String>("closePane").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::ClosePane)));
    Nan::Set(enumObject, Nan::New<String>("world").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::World)));
    Nan::Set(enumObject, Nan::New<String>("flag").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Flag)));
    Nan::Set(enumObject, Nan::New<String>("previewLink").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::PreviewLink)));
    Nan::Set(enumObject, Nan::New<String>("globe").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Globe)));
    Nan::Set(enumObject, Nan::New<String>("trim").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Trim)));
    Nan::Set(enumObject, Nan::New<String>("attachCamera").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::AttachCamera)));
    Nan::Set(enumObject, Nan::New<String>("zoomIn").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::ZoomIn)));
    Nan::Set(enumObject, Nan::New<String>("bookmarks").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Bookmarks)));
    Nan::Set(enumObject, Nan::New<String>("document").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Document)));
    Nan::Set(enumObject, Nan::New<String>("protectedDocument").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::ProtectedDocument)));
    Nan::Set(enumObject, Nan::New<String>("page").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Page)));
    Nan::Set(enumObject, Nan::New<String>("bullets").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Bullets)));
    Nan::Set(enumObject, Nan::New<String>("comment").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Comment)));
    Nan::Set(enumObject, Nan::New<String>("mailFilled").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::MailFilled)));
    Nan::Set(enumObject, Nan::New<String>("contactInfo").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::ContactInfo)));
    Nan::Set(enumObject, Nan::New<String>("hangUp").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::HangUp)));
    Nan::Set(enumObject, Nan::New<String>("viewAll").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::ViewAll)));
    Nan::Set(enumObject, Nan::New<String>("mapPin").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::MapPin)));
    Nan::Set(enumObject, Nan::New<String>("phone").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Phone)));
    Nan::Set(enumObject, Nan::New<String>("videoChat").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::VideoChat)));
    Nan::Set(enumObject, Nan::New<String>("switch").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Switch)));
    Nan::Set(enumObject, Nan::New<String>("contact").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Contact)));
    Nan::Set(enumObject, Nan::New<String>("rename").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Rename)));
    Nan::Set(enumObject, Nan::New<String>("pin").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Pin)));
    Nan::Set(enumObject, Nan::New<String>("musicInfo").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::MusicInfo)));
    Nan::Set(enumObject, Nan::New<String>("go").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Go)));
    Nan::Set(enumObject, Nan::New<String>("keyboard").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Keyboard)));
    Nan::Set(enumObject, Nan::New<String>("dockLeft").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::DockLeft)));
    Nan::Set(enumObject, Nan::New<String>("dockRight").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::DockRight)));
    Nan::Set(enumObject, Nan::New<String>("dockBottom").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::DockBottom)));
    Nan::Set(enumObject, Nan::New<String>("remote").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Remote)));
    Nan::Set(enumObject, Nan::New<String>("refresh").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Refresh)));
    Nan::Set(enumObject, Nan::New<String>("rotate").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Rotate)));
    Nan::Set(enumObject, Nan::New<String>("shuffle").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Shuffle)));
    Nan::Set(enumObject, Nan::New<String>("list").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::List)));
    Nan::Set(enumObject, Nan::New<String>("shop").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Shop)));
    Nan::Set(enumObject, Nan::New<String>("selectAll").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::SelectAll)));
    Nan::Set(enumObject, Nan::New<String>("orientation").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Orientation)));
    Nan::Set(enumObject, Nan::New<String>("import").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Import)));
    Nan::Set(enumObject, Nan::New<String>("importAll").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::ImportAll)));
    Nan::Set(enumObject, Nan::New<String>("browsePhotos").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::BrowsePhotos)));
    Nan::Set(enumObject, Nan::New<String>("webCam").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::WebCam)));
    Nan::Set(enumObject, Nan::New<String>("pictures").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Pictures)));
    Nan::Set(enumObject, Nan::New<String>("saveLocal").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::SaveLocal)));
    Nan::Set(enumObject, Nan::New<String>("caption").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Caption)));
    Nan::Set(enumObject, Nan::New<String>("stop").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Stop)));
    Nan::Set(enumObject, Nan::New<String>("showResults").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::ShowResults)));
    Nan::Set(enumObject, Nan::New<String>("volume").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Volume)));
    Nan::Set(enumObject, Nan::New<String>("repair").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Repair)));
    Nan::Set(enumObject, Nan::New<String>("message").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Message)));
    Nan::Set(enumObject, Nan::New<String>("page2").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Page2)));
    Nan::Set(enumObject, Nan::New<String>("calendarDay").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::CalendarDay)));
    Nan::Set(enumObject, Nan::New<String>("calendarWeek").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::CalendarWeek)));
    Nan::Set(enumObject, Nan::New<String>("calendar").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Calendar)));
    Nan::Set(enumObject, Nan::New<String>("character").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Character)));
    Nan::Set(enumObject, Nan::New<String>("mailReplyAll").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::MailReplyAll)));
    Nan::Set(enumObject, Nan::New<String>("read").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Read)));
    Nan::Set(enumObject, Nan::New<String>("link").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Link)));
    Nan::Set(enumObject, Nan::New<String>("account").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Account)));
    Nan::Set(enumObject, Nan::New<String>("showBcc").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::ShowBcc)));
    Nan::Set(enumObject, Nan::New<String>("hideBcc").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::HideBcc)));
    Nan::Set(enumObject, Nan::New<String>("cut").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Cut)));
    Nan::Set(enumObject, Nan::New<String>("attach").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Attach)));
    Nan::Set(enumObject, Nan::New<String>("paste").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Paste)));
    Nan::Set(enumObject, Nan::New<String>("filter").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Filter)));
    Nan::Set(enumObject, Nan::New<String>("copy").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Copy)));
    Nan::Set(enumObject, Nan::New<String>("emoji2").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Emoji2)));
    Nan::Set(enumObject, Nan::New<String>("important").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Important)));
    Nan::Set(enumObject, Nan::New<String>("mailReply").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::MailReply)));
    Nan::Set(enumObject, Nan::New<String>("slideShow").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::SlideShow)));
    Nan::Set(enumObject, Nan::New<String>("sort").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Sort)));
    Nan::Set(enumObject, Nan::New<String>("manage").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Manage)));
    Nan::Set(enumObject, Nan::New<String>("allApps").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::AllApps)));
    Nan::Set(enumObject, Nan::New<String>("disconnectDrive").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::DisconnectDrive)));
    Nan::Set(enumObject, Nan::New<String>("mapDrive").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::MapDrive)));
    Nan::Set(enumObject, Nan::New<String>("newWindow").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::NewWindow)));
    Nan::Set(enumObject, Nan::New<String>("openWith").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::OpenWith)));
    Nan::Set(enumObject, Nan::New<String>("contactPresence").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::ContactPresence)));
    Nan::Set(enumObject, Nan::New<String>("priority").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Priority)));
    Nan::Set(enumObject, Nan::New<String>("goToToday").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::GoToToday)));
    Nan::Set(enumObject, Nan::New<String>("font").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Font)));
    Nan::Set(enumObject, Nan::New<String>("fontColor").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::FontColor)));
    Nan::Set(enumObject, Nan::New<String>("contact2").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Contact2)));
    Nan::Set(enumObject, Nan::New<String>("folder").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Folder)));
    Nan::Set(enumObject, Nan::New<String>("audio").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Audio)));
    Nan::Set(enumObject, Nan::New<String>("placeholder").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Placeholder)));
    Nan::Set(enumObject, Nan::New<String>("view").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::View)));
    Nan::Set(enumObject, Nan::New<String>("setLockScreen").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::SetLockScreen)));
    Nan::Set(enumObject, Nan::New<String>("setTile").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::SetTile)));
    Nan::Set(enumObject, Nan::New<String>("closedCaption").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::ClosedCaption)));
    Nan::Set(enumObject, Nan::New<String>("stopSlideShow").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::StopSlideShow)));
    Nan::Set(enumObject, Nan::New<String>("permissions").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Permissions)));
    Nan::Set(enumObject, Nan::New<String>("highlight").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Highlight)));
    Nan::Set(enumObject, Nan::New<String>("disableUpdates").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::DisableUpdates)));
    Nan::Set(enumObject, Nan::New<String>("unFavorite").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::UnFavorite)));
    Nan::Set(enumObject, Nan::New<String>("unPin").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::UnPin)));
    Nan::Set(enumObject, Nan::New<String>("openLocal").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::OpenLocal)));
    Nan::Set(enumObject, Nan::New<String>("mute").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Mute)));
    Nan::Set(enumObject, Nan::New<String>("italic").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Italic)));
    Nan::Set(enumObject, Nan::New<String>("underline").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Underline)));
    Nan::Set(enumObject, Nan::New<String>("bold").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Bold)));
    Nan::Set(enumObject, Nan::New<String>("moveToFolder").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::MoveToFolder)));
    Nan::Set(enumObject, Nan::New<String>("likeDislike").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::LikeDislike)));
    Nan::Set(enumObject, Nan::New<String>("dislike").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Dislike)));
    Nan::Set(enumObject, Nan::New<String>("like").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Like)));
    Nan::Set(enumObject, Nan::New<String>("alignRight").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::AlignRight)));
    Nan::Set(enumObject, Nan::New<String>("alignCenter").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::AlignCenter)));
    Nan::Set(enumObject, Nan::New<String>("alignLeft").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::AlignLeft)));
    Nan::Set(enumObject, Nan::New<String>("zoom").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Zoom)));
    Nan::Set(enumObject, Nan::New<String>("zoomOut").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::ZoomOut)));
    Nan::Set(enumObject, Nan::New<String>("openFile").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::OpenFile)));
    Nan::Set(enumObject, Nan::New<String>("otherUser").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::OtherUser)));
    Nan::Set(enumObject, Nan::New<String>("admin").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Admin)));
    Nan::Set(enumObject, Nan::New<String>("street").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Street)));
    Nan::Set(enumObject, Nan::New<String>("map").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Map)));
    Nan::Set(enumObject, Nan::New<String>("clearSelection").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::ClearSelection)));
    Nan::Set(enumObject, Nan::New<String>("fontDecrease").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::FontDecrease)));
    Nan::Set(enumObject, Nan::New<String>("fontIncrease").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::FontIncrease)));
    Nan::Set(enumObject, Nan::New<String>("fontSize").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::FontSize)));
    Nan::Set(enumObject, Nan::New<String>("cellPhone").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::CellPhone)));
    Nan::Set(enumObject, Nan::New<String>("reShare").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::ReShare)));
    Nan::Set(enumObject, Nan::New<String>("tag").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Tag)));
    Nan::Set(enumObject, Nan::New<String>("repeatOne").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::RepeatOne)));
    Nan::Set(enumObject, Nan::New<String>("repeatAll").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::RepeatAll)));
    Nan::Set(enumObject, Nan::New<String>("outlineStar").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::OutlineStar)));
    Nan::Set(enumObject, Nan::New<String>("solidStar").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::SolidStar)));
    Nan::Set(enumObject, Nan::New<String>("calculator").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Calculator)));
    Nan::Set(enumObject, Nan::New<String>("directions").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Directions)));
    Nan::Set(enumObject, Nan::New<String>("target").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Target)));
    Nan::Set(enumObject, Nan::New<String>("library").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Library)));
    Nan::Set(enumObject, Nan::New<String>("phoneBook").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::PhoneBook)));
    Nan::Set(enumObject, Nan::New<String>("memo").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Memo)));
    Nan::Set(enumObject, Nan::New<String>("microphone").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Microphone)));
    Nan::Set(enumObject, Nan::New<String>("postUpdate").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::PostUpdate)));
    Nan::Set(enumObject, Nan::New<String>("backToWindow").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::BackToWindow)));
    Nan::Set(enumObject, Nan::New<String>("fullScreen").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::FullScreen)));
    Nan::Set(enumObject, Nan::New<String>("newFolder").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::NewFolder)));
    Nan::Set(enumObject, Nan::New<String>("calendarReply").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::CalendarReply)));
    Nan::Set(enumObject, Nan::New<String>("unSyncFolder").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::UnSyncFolder)));
    Nan::Set(enumObject, Nan::New<String>("reportHacked").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::ReportHacked)));
    Nan::Set(enumObject, Nan::New<String>("syncFolder").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::SyncFolder)));
    Nan::Set(enumObject, Nan::New<String>("blockContact").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::BlockContact)));
    Nan::Set(enumObject, Nan::New<String>("switchApps").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::SwitchApps)));
    Nan::Set(enumObject, Nan::New<String>("addFriend").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::AddFriend)));
    Nan::Set(enumObject, Nan::New<String>("touchPointer").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::TouchPointer)));
    Nan::Set(enumObject, Nan::New<String>("goToStart").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::GoToStart)));
    Nan::Set(enumObject, Nan::New<String>("zeroBars").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::ZeroBars)));
    Nan::Set(enumObject, Nan::New<String>("oneBar").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::OneBar)));
    Nan::Set(enumObject, Nan::New<String>("twoBars").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::TwoBars)));
    Nan::Set(enumObject, Nan::New<String>("threeBars").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::ThreeBars)));
    Nan::Set(enumObject, Nan::New<String>("fourBars").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::FourBars)));
    Nan::Set(enumObject, Nan::New<String>("scan").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Scan)));
    Nan::Set(enumObject, Nan::New<String>("preview").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::Symbol::Preview)));
  }

  static void InitWebViewExecutionModeEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("WebViewExecutionMode").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("sameThread").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::WebViewExecutionMode::SameThread)));
    Nan::Set(enumObject, Nan::New<String>("separateThread").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::WebViewExecutionMode::SeparateThread)));
  }

  static void InitWebViewPermissionStateEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("WebViewPermissionState").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("unknown").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::WebViewPermissionState::Unknown)));
    Nan::Set(enumObject, Nan::New<String>("defer").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::WebViewPermissionState::Defer)));
    Nan::Set(enumObject, Nan::New<String>("allow").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::WebViewPermissionState::Allow)));
    Nan::Set(enumObject, Nan::New<String>("deny").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::WebViewPermissionState::Deny)));
  }

  static void InitWebViewPermissionTypeEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("WebViewPermissionType").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("geolocation").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::WebViewPermissionType::Geolocation)));
    Nan::Set(enumObject, Nan::New<String>("unlimitedIndexedDBQuota").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::WebViewPermissionType::UnlimitedIndexedDBQuota)));
    Nan::Set(enumObject, Nan::New<String>("media").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::WebViewPermissionType::Media)));
    Nan::Set(enumObject, Nan::New<String>("pointerLock").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::WebViewPermissionType::PointerLock)));
    Nan::Set(enumObject, Nan::New<String>("webNotifications").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::WebViewPermissionType::WebNotifications)));
  }

  static void InitLightDismissOverlayModeEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("LightDismissOverlayMode").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("auto").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::LightDismissOverlayMode::Auto)));
    Nan::Set(enumObject, Nan::New<String>("on").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::LightDismissOverlayMode::On)));
    Nan::Set(enumObject, Nan::New<String>("off").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::LightDismissOverlayMode::Off)));
  }

  static void InitRequiresPointerEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("RequiresPointer").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("never").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::RequiresPointer::Never)));
    Nan::Set(enumObject, Nan::New<String>("whenEngaged").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::RequiresPointer::WhenEngaged)));
    Nan::Set(enumObject, Nan::New<String>("whenFocused").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::RequiresPointer::WhenFocused)));
  }

  static void InitInkToolbarButtonFlyoutPlacementEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("InkToolbarButtonFlyoutPlacement").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("auto").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarButtonFlyoutPlacement::Auto)));
    Nan::Set(enumObject, Nan::New<String>("top").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarButtonFlyoutPlacement::Top)));
    Nan::Set(enumObject, Nan::New<String>("bottom").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarButtonFlyoutPlacement::Bottom)));
    Nan::Set(enumObject, Nan::New<String>("left").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarButtonFlyoutPlacement::Left)));
    Nan::Set(enumObject, Nan::New<String>("right").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarButtonFlyoutPlacement::Right)));
  }

  static void InitInkToolbarFlyoutItemKindEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("InkToolbarFlyoutItemKind").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("simple").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarFlyoutItemKind::Simple)));
    Nan::Set(enumObject, Nan::New<String>("radio").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarFlyoutItemKind::Radio)));
    Nan::Set(enumObject, Nan::New<String>("check").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarFlyoutItemKind::Check)));
    Nan::Set(enumObject, Nan::New<String>("radioCheck").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarFlyoutItemKind::RadioCheck)));
  }

  static void InitInkToolbarInitialControlsEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("InkToolbarInitialControls").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("all").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarInitialControls::All)));
    Nan::Set(enumObject, Nan::New<String>("none").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarInitialControls::None)));
    Nan::Set(enumObject, Nan::New<String>("pensOnly").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarInitialControls::PensOnly)));
    Nan::Set(enumObject, Nan::New<String>("allExceptPens").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarInitialControls::AllExceptPens)));
  }

  static void InitInkToolbarMenuKindEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("InkToolbarMenuKind").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("stencil").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarMenuKind::Stencil)));
  }

  static void InitInkToolbarStencilKindEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("InkToolbarStencilKind").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("ruler").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarStencilKind::Ruler)));
    Nan::Set(enumObject, Nan::New<String>("protractor").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarStencilKind::Protractor)));
  }

  static void InitInkToolbarToggleEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("InkToolbarToggle").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("ruler").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarToggle::Ruler)));
    Nan::Set(enumObject, Nan::New<String>("custom").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarToggle::Custom)));
  }

  static void InitInkToolbarToolEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("InkToolbarTool").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("ballpointPen").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarTool::BallpointPen)));
    Nan::Set(enumObject, Nan::New<String>("pencil").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarTool::Pencil)));
    Nan::Set(enumObject, Nan::New<String>("highlighter").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarTool::Highlighter)));
    Nan::Set(enumObject, Nan::New<String>("eraser").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarTool::Eraser)));
    Nan::Set(enumObject, Nan::New<String>("customPen").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarTool::CustomPen)));
    Nan::Set(enumObject, Nan::New<String>("customTool").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::InkToolbarTool::CustomTool)));
  }

  static void InitListPickerFlyoutSelectionModeEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("ListPickerFlyoutSelectionMode").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("single").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ListPickerFlyoutSelectionMode::Single)));
    Nan::Set(enumObject, Nan::New<String>("multiple").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::ListPickerFlyoutSelectionMode::Multiple)));
  }

  static void InitPivotHeaderFocusVisualPlacementEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("PivotHeaderFocusVisualPlacement").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("itemHeaders").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::PivotHeaderFocusVisualPlacement::ItemHeaders)));
    Nan::Set(enumObject, Nan::New<String>("selectedItemHeader").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::PivotHeaderFocusVisualPlacement::SelectedItemHeader)));
  }

  static void InitPivotSlideInAnimationGroupEnum(const Local<Object> exports) {
    HandleScope scope;

    Local<Object> enumObject = Nan::New<Object>();

    Nan::Set(exports, Nan::New<String>("PivotSlideInAnimationGroup").ToLocalChecked(), enumObject);
    Nan::Set(enumObject, Nan::New<String>("default").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::PivotSlideInAnimationGroup::Default)));
    Nan::Set(enumObject, Nan::New<String>("groupOne").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::PivotSlideInAnimationGroup::GroupOne)));
    Nan::Set(enumObject, Nan::New<String>("groupTwo").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::PivotSlideInAnimationGroup::GroupTwo)));
    Nan::Set(enumObject, Nan::New<String>("groupThree").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::UI::Xaml::Controls::PivotSlideInAnimationGroup::GroupThree)));
  }


  static bool IsPointJsObject(Local<Value> value) {
    if (!value->IsObject()) {
      return false;
    }

    Local<String> symbol;
    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();

    return true;
  }

  ::Windows::Foundation::Point PointFromJsObject(Local<Value> value) {
    HandleScope scope;
    ::Windows::Foundation::Point returnValue;

    if (!value->IsObject()) {
      Nan::ThrowError(Nan::TypeError(NodeRT::Utils::NewString(L"Unexpected type, expected an object")));
      return returnValue;
    }

    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();
    Local<String> symbol;

    return returnValue;
  }

  Local<Value> PointToJsObject(::Windows::Foundation::Point value) {
    EscapableHandleScope scope;

    Local<Object> obj = Nan::New<Object>();


    return scope.Escape(obj);
  }
  static bool IsRectJsObject(Local<Value> value) {
    if (!value->IsObject()) {
      return false;
    }

    Local<String> symbol;
    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();

    return true;
  }

  ::Windows::Foundation::Rect RectFromJsObject(Local<Value> value) {
    HandleScope scope;
    ::Windows::Foundation::Rect returnValue;

    if (!value->IsObject()) {
      Nan::ThrowError(Nan::TypeError(NodeRT::Utils::NewString(L"Unexpected type, expected an object")));
      return returnValue;
    }

    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();
    Local<String> symbol;

    return returnValue;
  }

  Local<Value> RectToJsObject(::Windows::Foundation::Rect value) {
    EscapableHandleScope scope;

    Local<Object> obj = Nan::New<Object>();


    return scope.Escape(obj);
  }
  static bool IsGeneratorPositionJsObject(Local<Value> value) {
    if (!value->IsObject()) {
      return false;
    }

    Local<String> symbol;
    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();

    return true;
  }

  ::Windows::UI::Xaml::Controls::Primitives::GeneratorPosition GeneratorPositionFromJsObject(Local<Value> value) {
    HandleScope scope;
    ::Windows::UI::Xaml::Controls::Primitives::GeneratorPosition returnValue;

    if (!value->IsObject()) {
      Nan::ThrowError(Nan::TypeError(NodeRT::Utils::NewString(L"Unexpected type, expected an object")));
      return returnValue;
    }

    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();
    Local<String> symbol;

    return returnValue;
  }

  Local<Value> GeneratorPositionToJsObject(::Windows::UI::Xaml::Controls::Primitives::GeneratorPosition value) {
    EscapableHandleScope scope;

    Local<Object> obj = Nan::New<Object>();


    return scope.Escape(obj);
  }
  static bool IsGridLengthJsObject(Local<Value> value) {
    if (!value->IsObject()) {
      return false;
    }

    Local<String> symbol;
    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();

    return true;
  }

  ::Windows::UI::Xaml::GridLength GridLengthFromJsObject(Local<Value> value) {
    HandleScope scope;
    ::Windows::UI::Xaml::GridLength returnValue;

    if (!value->IsObject()) {
      Nan::ThrowError(Nan::TypeError(NodeRT::Utils::NewString(L"Unexpected type, expected an object")));
      return returnValue;
    }

    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();
    Local<String> symbol;

    return returnValue;
  }

  Local<Value> GridLengthToJsObject(::Windows::UI::Xaml::GridLength value) {
    EscapableHandleScope scope;

    Local<Object> obj = Nan::New<Object>();


    return scope.Escape(obj);
  }
  static bool IsSizeJsObject(Local<Value> value) {
    if (!value->IsObject()) {
      return false;
    }

    Local<String> symbol;
    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();

    return true;
  }

  ::Windows::Foundation::Size SizeFromJsObject(Local<Value> value) {
    HandleScope scope;
    ::Windows::Foundation::Size returnValue;

    if (!value->IsObject()) {
      Nan::ThrowError(Nan::TypeError(NodeRT::Utils::NewString(L"Unexpected type, expected an object")));
      return returnValue;
    }

    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();
    Local<String> symbol;

    return returnValue;
  }

  Local<Value> SizeToJsObject(::Windows::Foundation::Size value) {
    EscapableHandleScope scope;

    Local<Object> obj = Nan::New<Object>();


    return scope.Escape(obj);
  }
  static bool IsThicknessJsObject(Local<Value> value) {
    if (!value->IsObject()) {
      return false;
    }

    Local<String> symbol;
    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();

    return true;
  }

  ::Windows::UI::Xaml::Thickness ThicknessFromJsObject(Local<Value> value) {
    HandleScope scope;
    ::Windows::UI::Xaml::Thickness returnValue;

    if (!value->IsObject()) {
      Nan::ThrowError(Nan::TypeError(NodeRT::Utils::NewString(L"Unexpected type, expected an object")));
      return returnValue;
    }

    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();
    Local<String> symbol;

    return returnValue;
  }

  Local<Value> ThicknessToJsObject(::Windows::UI::Xaml::Thickness value) {
    EscapableHandleScope scope;

    Local<Object> obj = Nan::New<Object>();


    return scope.Escape(obj);
  }
  static bool IsCornerRadiusJsObject(Local<Value> value) {
    if (!value->IsObject()) {
      return false;
    }

    Local<String> symbol;
    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();

    return true;
  }

  ::Windows::UI::Xaml::CornerRadius CornerRadiusFromJsObject(Local<Value> value) {
    HandleScope scope;
    ::Windows::UI::Xaml::CornerRadius returnValue;

    if (!value->IsObject()) {
      Nan::ThrowError(Nan::TypeError(NodeRT::Utils::NewString(L"Unexpected type, expected an object")));
      return returnValue;
    }

    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();
    Local<String> symbol;

    return returnValue;
  }

  Local<Value> CornerRadiusToJsObject(::Windows::UI::Xaml::CornerRadius value) {
    EscapableHandleScope scope;

    Local<Object> obj = Nan::New<Object>();


    return scope.Escape(obj);
  }
  static bool IsFontWeightJsObject(Local<Value> value) {
    if (!value->IsObject()) {
      return false;
    }

    Local<String> symbol;
    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();

    symbol = Nan::New<String>("weight").ToLocalChecked();
    if (Nan::Has(obj, symbol).FromMaybe(false)) {
      if (!Nan::Get(obj,symbol).ToLocalChecked()->IsInt32()) {
        return false;
      }
    }
    
    return true;
  }

  ::Windows::UI::Text::FontWeight FontWeightFromJsObject(Local<Value> value) {
    HandleScope scope;
    ::Windows::UI::Text::FontWeight returnValue;

    if (!value->IsObject()) {
      Nan::ThrowError(Nan::TypeError(NodeRT::Utils::NewString(L"Unexpected type, expected an object")));
      return returnValue;
    }

    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();
    Local<String> symbol;

    symbol = Nan::New<String>("weight").ToLocalChecked();
    if (Nan::Has(obj, symbol).FromMaybe(false)) {
      returnValue.Weight = static_cast<unsigned short>(Nan::To<int32_t>(Nan::Get(obj,symbol).ToLocalChecked()).FromMaybe(0));
    }
    
    return returnValue;
  }

  Local<Value> FontWeightToJsObject(::Windows::UI::Text::FontWeight value) {
    EscapableHandleScope scope;

    Local<Object> obj = Nan::New<Object>();

    Nan::Set(obj, Nan::New<String>("weight").ToLocalChecked(), Nan::New<Integer>(value.Weight));

    return scope.Escape(obj);
  }
  static bool IsDurationJsObject(Local<Value> value) {
    if (!value->IsObject()) {
      return false;
    }

    Local<String> symbol;
    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();

    return true;
  }

  ::Windows::UI::Xaml::Duration DurationFromJsObject(Local<Value> value) {
    HandleScope scope;
    ::Windows::UI::Xaml::Duration returnValue;

    if (!value->IsObject()) {
      Nan::ThrowError(Nan::TypeError(NodeRT::Utils::NewString(L"Unexpected type, expected an object")));
      return returnValue;
    }

    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();
    Local<String> symbol;

    return returnValue;
  }

  Local<Value> DurationToJsObject(::Windows::UI::Xaml::Duration value) {
    EscapableHandleScope scope;

    Local<Object> obj = Nan::New<Object>();


    return scope.Escape(obj);
  }
  static bool IsColorJsObject(Local<Value> value) {
    if (!value->IsObject()) {
      return false;
    }

    Local<String> symbol;
    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();

    return true;
  }

  ::Windows::UI::Color ColorFromJsObject(Local<Value> value) {
    HandleScope scope;
    ::Windows::UI::Color returnValue;

    if (!value->IsObject()) {
      Nan::ThrowError(Nan::TypeError(NodeRT::Utils::NewString(L"Unexpected type, expected an object")));
      return returnValue;
    }

    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();
    Local<String> symbol;

    return returnValue;
  }

  Local<Value> ColorToJsObject(::Windows::UI::Color value) {
    EscapableHandleScope scope;

    Local<Object> obj = Nan::New<Object>();


    return scope.Escape(obj);
  }
  static bool IsLoadMoreItemsResultJsObject(Local<Value> value) {
    if (!value->IsObject()) {
      return false;
    }

    Local<String> symbol;
    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();

    symbol = Nan::New<String>("count").ToLocalChecked();
    if (Nan::Has(obj, symbol).FromMaybe(false)) {
      if (!Nan::Get(obj,symbol).ToLocalChecked()->IsUint32()) {
        return false;
      }
    }
    
    return true;
  }

  ::Windows::UI::Xaml::Data::LoadMoreItemsResult LoadMoreItemsResultFromJsObject(Local<Value> value) {
    HandleScope scope;
    ::Windows::UI::Xaml::Data::LoadMoreItemsResult returnValue;

    if (!value->IsObject()) {
      Nan::ThrowError(Nan::TypeError(NodeRT::Utils::NewString(L"Unexpected type, expected an object")));
      return returnValue;
    }

    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();
    Local<String> symbol;

    symbol = Nan::New<String>("count").ToLocalChecked();
    if (Nan::Has(obj, symbol).FromMaybe(false)) {
      returnValue.Count = static_cast<unsigned int>(Nan::To<uint32_t>(Nan::Get(obj,symbol).ToLocalChecked()).FromMaybe(0));
    }
    
    return returnValue;
  }

  Local<Value> LoadMoreItemsResultToJsObject(::Windows::UI::Xaml::Data::LoadMoreItemsResult value) {
    EscapableHandleScope scope;

    Local<Object> obj = Nan::New<Object>();

    Nan::Set(obj, Nan::New<String>("count").ToLocalChecked(), Nan::New<Integer>(value.Count));

    return scope.Escape(obj);
  }

  class BackClickEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("BackClickEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("handled").ToLocalChecked(), HandledGetter, HandledSetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("BackClickEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      BackClickEventArgs(::Windows::UI::Xaml::Controls::BackClickEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::BackClickEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BackClickEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::BackClickEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::BackClickEventArgs();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      BackClickEventArgs *wrapperInstance = new BackClickEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BackClickEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::BackClickEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::BackClickEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapBackClickEventArgs(winRtInstance));
    }





    static void HandledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BackClickEventArgs^>(info.This())) {
        return;
      }

      BackClickEventArgs *wrapper = BackClickEventArgs::Unwrap<BackClickEventArgs>(info.This());

      try  {
        bool result = wrapper->_instance->Handled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HandledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BackClickEventArgs^>(info.This())) {
        return;
      }

      BackClickEventArgs *wrapper = BackClickEventArgs::Unwrap<BackClickEventArgs>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->Handled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::BackClickEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapBackClickEventArgs(::Windows::UI::Xaml::Controls::BackClickEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::BackClickEventArgs^ UnwrapBackClickEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> BackClickEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapBackClickEventArgs(::Windows::UI::Xaml::Controls::BackClickEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(BackClickEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::BackClickEventArgs^ UnwrapBackClickEventArgs(Local<Value> value) {
     return BackClickEventArgs::Unwrap<BackClickEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitBackClickEventArgs(Local<Object> exports) {
    BackClickEventArgs::Init(exports);
  }

  class DragItemsStartingEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("DragItemsStartingEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cancel").ToLocalChecked(), CancelGetter, CancelSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("data").ToLocalChecked(), DataGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("items").ToLocalChecked(), ItemsGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("DragItemsStartingEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      DragItemsStartingEventArgs(::Windows::UI::Xaml::Controls::DragItemsStartingEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::DragItemsStartingEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DragItemsStartingEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::DragItemsStartingEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::DragItemsStartingEventArgs();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      DragItemsStartingEventArgs *wrapperInstance = new DragItemsStartingEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DragItemsStartingEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::DragItemsStartingEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::DragItemsStartingEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapDragItemsStartingEventArgs(winRtInstance));
    }





    static void CancelGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DragItemsStartingEventArgs^>(info.This())) {
        return;
      }

      DragItemsStartingEventArgs *wrapper = DragItemsStartingEventArgs::Unwrap<DragItemsStartingEventArgs>(info.This());

      try  {
        bool result = wrapper->_instance->Cancel;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CancelSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DragItemsStartingEventArgs^>(info.This())) {
        return;
      }

      DragItemsStartingEventArgs *wrapper = DragItemsStartingEventArgs::Unwrap<DragItemsStartingEventArgs>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->Cancel = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DragItemsStartingEventArgs^>(info.This())) {
        return;
      }

      DragItemsStartingEventArgs *wrapper = DragItemsStartingEventArgs::Unwrap<DragItemsStartingEventArgs>(info.This());

      try  {
        ::Windows::ApplicationModel::DataTransfer::DataPackage^ result = wrapper->_instance->Data;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.DataTransfer", "DataPackage", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DragItemsStartingEventArgs^>(info.This())) {
        return;
      }

      DragItemsStartingEventArgs *wrapper = DragItemsStartingEventArgs::Unwrap<DragItemsStartingEventArgs>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Platform::Object^>^ result = wrapper->_instance->Items;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Platform::Object^>::CreateVectorWrapper(result, 
            [](::Platform::Object^ val) -> Local<Value> {
              return CreateOpaqueWrapper(val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value);
            },
            [](Local<Value> value) -> ::Platform::Object^ {
              return dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::DragItemsStartingEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapDragItemsStartingEventArgs(::Windows::UI::Xaml::Controls::DragItemsStartingEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::DragItemsStartingEventArgs^ UnwrapDragItemsStartingEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> DragItemsStartingEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapDragItemsStartingEventArgs(::Windows::UI::Xaml::Controls::DragItemsStartingEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(DragItemsStartingEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::DragItemsStartingEventArgs^ UnwrapDragItemsStartingEventArgs(Local<Value> value) {
     return DragItemsStartingEventArgs::Unwrap<DragItemsStartingEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitDragItemsStartingEventArgs(Local<Object> exports) {
    DragItemsStartingEventArgs::Init(exports);
  }

  class NotifyEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("NotifyEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("value").ToLocalChecked(), ValueGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("callingUri").ToLocalChecked(), CallingUriGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("NotifyEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      NotifyEventArgs(::Windows::UI::Xaml::Controls::NotifyEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::NotifyEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::NotifyEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::NotifyEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      NotifyEventArgs *wrapperInstance = new NotifyEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::NotifyEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::NotifyEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::NotifyEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapNotifyEventArgs(winRtInstance));
    }





    static void ValueGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::NotifyEventArgs^>(info.This())) {
        return;
      }

      NotifyEventArgs *wrapper = NotifyEventArgs::Unwrap<NotifyEventArgs>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Value;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CallingUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::NotifyEventArgs^>(info.This())) {
        return;
      }

      NotifyEventArgs *wrapper = NotifyEventArgs::Unwrap<NotifyEventArgs>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->CallingUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::NotifyEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapNotifyEventArgs(::Windows::UI::Xaml::Controls::NotifyEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::NotifyEventArgs^ UnwrapNotifyEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> NotifyEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapNotifyEventArgs(::Windows::UI::Xaml::Controls::NotifyEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(NotifyEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::NotifyEventArgs^ UnwrapNotifyEventArgs(Local<Value> value) {
     return NotifyEventArgs::Unwrap<NotifyEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitNotifyEventArgs(Local<Object> exports) {
    NotifyEventArgs::Init(exports);
  }

  class SemanticZoomViewChangedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("SemanticZoomViewChangedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("sourceItem").ToLocalChecked(), SourceItemGetter, SourceItemSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSourceZoomedInView").ToLocalChecked(), IsSourceZoomedInViewGetter, IsSourceZoomedInViewSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("destinationItem").ToLocalChecked(), DestinationItemGetter, DestinationItemSetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("SemanticZoomViewChangedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      SemanticZoomViewChangedEventArgs(::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      SemanticZoomViewChangedEventArgs *wrapperInstance = new SemanticZoomViewChangedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapSemanticZoomViewChangedEventArgs(winRtInstance));
    }





    static void SourceItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs^>(info.This())) {
        return;
      }

      SemanticZoomViewChangedEventArgs *wrapper = SemanticZoomViewChangedEventArgs::Unwrap<SemanticZoomViewChangedEventArgs>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ result = wrapper->_instance->SourceItem;
        info.GetReturnValue().Set(WrapSemanticZoomLocation(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SourceItemSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs^>(info.This())) {
        return;
      }

      SemanticZoomViewChangedEventArgs *wrapper = SemanticZoomViewChangedEventArgs::Unwrap<SemanticZoomViewChangedEventArgs>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SourceItem = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsSourceZoomedInViewGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs^>(info.This())) {
        return;
      }

      SemanticZoomViewChangedEventArgs *wrapper = SemanticZoomViewChangedEventArgs::Unwrap<SemanticZoomViewChangedEventArgs>(info.This());

      try  {
        bool result = wrapper->_instance->IsSourceZoomedInView;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSourceZoomedInViewSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs^>(info.This())) {
        return;
      }

      SemanticZoomViewChangedEventArgs *wrapper = SemanticZoomViewChangedEventArgs::Unwrap<SemanticZoomViewChangedEventArgs>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsSourceZoomedInView = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DestinationItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs^>(info.This())) {
        return;
      }

      SemanticZoomViewChangedEventArgs *wrapper = SemanticZoomViewChangedEventArgs::Unwrap<SemanticZoomViewChangedEventArgs>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ result = wrapper->_instance->DestinationItem;
        info.GetReturnValue().Set(WrapSemanticZoomLocation(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DestinationItemSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs^>(info.This())) {
        return;
      }

      SemanticZoomViewChangedEventArgs *wrapper = SemanticZoomViewChangedEventArgs::Unwrap<SemanticZoomViewChangedEventArgs>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DestinationItem = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapSemanticZoomViewChangedEventArgs(::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs^ UnwrapSemanticZoomViewChangedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> SemanticZoomViewChangedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapSemanticZoomViewChangedEventArgs(::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(SemanticZoomViewChangedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs^ UnwrapSemanticZoomViewChangedEventArgs(Local<Value> value) {
     return SemanticZoomViewChangedEventArgs::Unwrap<SemanticZoomViewChangedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitSemanticZoomViewChangedEventArgs(Local<Object> exports) {
    SemanticZoomViewChangedEventArgs::Init(exports);
  }

  class TextControlPasteEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("TextControlPasteEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("handled").ToLocalChecked(), HandledGetter, HandledSetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("TextControlPasteEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      TextControlPasteEventArgs(::Windows::UI::Xaml::Controls::TextControlPasteEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::TextControlPasteEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextControlPasteEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::TextControlPasteEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      TextControlPasteEventArgs *wrapperInstance = new TextControlPasteEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextControlPasteEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::TextControlPasteEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::TextControlPasteEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapTextControlPasteEventArgs(winRtInstance));
    }





    static void HandledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextControlPasteEventArgs^>(info.This())) {
        return;
      }

      TextControlPasteEventArgs *wrapper = TextControlPasteEventArgs::Unwrap<TextControlPasteEventArgs>(info.This());

      try  {
        bool result = wrapper->_instance->Handled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HandledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextControlPasteEventArgs^>(info.This())) {
        return;
      }

      TextControlPasteEventArgs *wrapper = TextControlPasteEventArgs::Unwrap<TextControlPasteEventArgs>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->Handled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::TextControlPasteEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapTextControlPasteEventArgs(::Windows::UI::Xaml::Controls::TextControlPasteEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::TextControlPasteEventArgs^ UnwrapTextControlPasteEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> TextControlPasteEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapTextControlPasteEventArgs(::Windows::UI::Xaml::Controls::TextControlPasteEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(TextControlPasteEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::TextControlPasteEventArgs^ UnwrapTextControlPasteEventArgs(Local<Value> value) {
     return TextControlPasteEventArgs::Unwrap<TextControlPasteEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitTextControlPasteEventArgs(Local<Object> exports) {
    TextControlPasteEventArgs::Init(exports);
  }

  class ContainerContentChangingEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ContainerContentChangingEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "registerUpdateCallback", RegisterUpdateCallback);
          



          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("handled").ToLocalChecked(), HandledGetter, HandledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("inRecycleQueue").ToLocalChecked(), InRecycleQueueGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("item").ToLocalChecked(), ItemGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainer").ToLocalChecked(), ItemContainerGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemIndex").ToLocalChecked(), ItemIndexGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("phase").ToLocalChecked(), PhaseGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("ContainerContentChangingEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ContainerContentChangingEventArgs(::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ContainerContentChangingEventArgs *wrapperInstance = new ContainerContentChangingEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapContainerContentChangingEventArgs(winRtInstance));
    }


    static void RegisterUpdateCallback(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^>(info.This())) {
        return;
      }

      ContainerContentChangingEventArgs *wrapper = ContainerContentChangingEventArgs::Unwrap<ContainerContentChangingEventArgs>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ListViewBase^, ::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^>^>(info[0]))
      {
        try
        {
          ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ListViewBase^, ::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^>^ arg0 = dynamic_cast<::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ListViewBase^, ::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^>^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->RegisterUpdateCallback(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 2
        && info[0]->IsUint32()
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ListViewBase^, ::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^>^>(info[1]))
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ListViewBase^, ::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^>^ arg1 = dynamic_cast<::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ListViewBase^, ::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^>^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          wrapper->_instance->RegisterUpdateCallback(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void HandledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^>(info.This())) {
        return;
      }

      ContainerContentChangingEventArgs *wrapper = ContainerContentChangingEventArgs::Unwrap<ContainerContentChangingEventArgs>(info.This());

      try  {
        bool result = wrapper->_instance->Handled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HandledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^>(info.This())) {
        return;
      }

      ContainerContentChangingEventArgs *wrapper = ContainerContentChangingEventArgs::Unwrap<ContainerContentChangingEventArgs>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->Handled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void InRecycleQueueGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^>(info.This())) {
        return;
      }

      ContainerContentChangingEventArgs *wrapper = ContainerContentChangingEventArgs::Unwrap<ContainerContentChangingEventArgs>(info.This());

      try  {
        bool result = wrapper->_instance->InRecycleQueue;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^>(info.This())) {
        return;
      }

      ContainerContentChangingEventArgs *wrapper = ContainerContentChangingEventArgs::Unwrap<ContainerContentChangingEventArgs>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Item;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^>(info.This())) {
        return;
      }

      ContainerContentChangingEventArgs *wrapper = ContainerContentChangingEventArgs::Unwrap<ContainerContentChangingEventArgs>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::SelectorItem^ result = wrapper->_instance->ItemContainer;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "SelectorItem", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^>(info.This())) {
        return;
      }

      ContainerContentChangingEventArgs *wrapper = ContainerContentChangingEventArgs::Unwrap<ContainerContentChangingEventArgs>(info.This());

      try  {
        int result = wrapper->_instance->ItemIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PhaseGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^>(info.This())) {
        return;
      }

      ContainerContentChangingEventArgs *wrapper = ContainerContentChangingEventArgs::Unwrap<ContainerContentChangingEventArgs>(info.This());

      try  {
        unsigned int result = wrapper->_instance->Phase;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapContainerContentChangingEventArgs(::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^ UnwrapContainerContentChangingEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> ContainerContentChangingEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapContainerContentChangingEventArgs(::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ContainerContentChangingEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^ UnwrapContainerContentChangingEventArgs(Local<Value> value) {
     return ContainerContentChangingEventArgs::Unwrap<ContainerContentChangingEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitContainerContentChangingEventArgs(Local<Object> exports) {
    ContainerContentChangingEventArgs::Init(exports);
  }

  class IInsertionPanel : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("IInsertionPanel").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "getInsertionIndexes", GetInsertionIndexes);
          




        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("IInsertionPanel").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      IInsertionPanel(::Windows::UI::Xaml::Controls::IInsertionPanel^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::IInsertionPanel^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IInsertionPanel^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::IInsertionPanel^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IInsertionPanel *wrapperInstance = new IInsertionPanel(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IInsertionPanel^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::IInsertionPanel^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::IInsertionPanel^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapIInsertionPanel(winRtInstance));
    }


    static void GetInsertionIndexes(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IInsertionPanel^>(info.This())) {
        return;
      }

      IInsertionPanel *wrapper = IInsertionPanel::Unwrap<IInsertionPanel>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsPoint(info[0]))
      {
        try
        {
          ::Windows::Foundation::Point arg0 = NodeRT::Utils::PointFromJs(info[0]);
          int arg1;
          int arg2;
          
          wrapper->_instance->GetInsertionIndexes(arg0, &arg1, &arg2);
          Local<Object> resObj = Nan::New<Object>();
          Nan::Set(resObj, Nan::New<String>("first").ToLocalChecked(), Nan::New<Integer>(arg1));
          Nan::Set(resObj, Nan::New<String>("second").ToLocalChecked(), Nan::New<Integer>(arg2));
          info.GetReturnValue().Set(resObj);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }





    private:
      ::Windows::UI::Xaml::Controls::IInsertionPanel^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapIInsertionPanel(::Windows::UI::Xaml::Controls::IInsertionPanel^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::IInsertionPanel^ UnwrapIInsertionPanel(Local<Value> value);
  };

  Persistent<FunctionTemplate> IInsertionPanel::s_constructorTemplate;

  v8::Local<v8::Value> WrapIInsertionPanel(::Windows::UI::Xaml::Controls::IInsertionPanel^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IInsertionPanel::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::IInsertionPanel^ UnwrapIInsertionPanel(Local<Value> value) {
     return IInsertionPanel::Unwrap<IInsertionPanel>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIInsertionPanel(Local<Object> exports) {
    IInsertionPanel::Init(exports);
  }

  class IItemContainerMapping : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("IItemContainerMapping").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "itemFromContainer", ItemFromContainer);
            Nan::SetPrototypeMethod(localRef, "containerFromItem", ContainerFromItem);
            Nan::SetPrototypeMethod(localRef, "indexFromContainer", IndexFromContainer);
            Nan::SetPrototypeMethod(localRef, "containerFromIndex", ContainerFromIndex);
          




        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("IItemContainerMapping").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      IItemContainerMapping(::Windows::UI::Xaml::Controls::IItemContainerMapping^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::IItemContainerMapping^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IItemContainerMapping^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::IItemContainerMapping^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IItemContainerMapping *wrapperInstance = new IItemContainerMapping(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IItemContainerMapping^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::IItemContainerMapping^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::IItemContainerMapping^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapIItemContainerMapping(winRtInstance));
    }


    static void ItemFromContainer(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IItemContainerMapping^>(info.This())) {
        return;
      }

      IItemContainerMapping *wrapper = IItemContainerMapping::Unwrap<IItemContainerMapping>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Platform::Object^ result;
          result = wrapper->_instance->ItemFromContainer(arg0);
          info.GetReturnValue().Set(CreateOpaqueWrapper(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void ContainerFromItem(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IItemContainerMapping^>(info.This())) {
        return;
      }

      IItemContainerMapping *wrapper = IItemContainerMapping::Unwrap<IItemContainerMapping>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Windows::UI::Xaml::DependencyObject^ result;
          result = wrapper->_instance->ContainerFromItem(arg0);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void IndexFromContainer(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IItemContainerMapping^>(info.This())) {
        return;
      }

      IItemContainerMapping *wrapper = IItemContainerMapping::Unwrap<IItemContainerMapping>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          int result;
          result = wrapper->_instance->IndexFromContainer(arg0);
          info.GetReturnValue().Set(Nan::New<Integer>(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void ContainerFromIndex(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IItemContainerMapping^>(info.This())) {
        return;
      }

      IItemContainerMapping *wrapper = IItemContainerMapping::Unwrap<IItemContainerMapping>(info.This());

      if (info.Length() == 1
        && info[0]->IsInt32())
      {
        try
        {
          int arg0 = static_cast<int>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          
          ::Windows::UI::Xaml::DependencyObject^ result;
          result = wrapper->_instance->ContainerFromIndex(arg0);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }





    private:
      ::Windows::UI::Xaml::Controls::IItemContainerMapping^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapIItemContainerMapping(::Windows::UI::Xaml::Controls::IItemContainerMapping^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::IItemContainerMapping^ UnwrapIItemContainerMapping(Local<Value> value);
  };

  Persistent<FunctionTemplate> IItemContainerMapping::s_constructorTemplate;

  v8::Local<v8::Value> WrapIItemContainerMapping(::Windows::UI::Xaml::Controls::IItemContainerMapping^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IItemContainerMapping::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::IItemContainerMapping^ UnwrapIItemContainerMapping(Local<Value> value) {
     return IItemContainerMapping::Unwrap<IItemContainerMapping>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIItemContainerMapping(Local<Object> exports) {
    IItemContainerMapping::Init(exports);
  }

  class INavigate : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("INavigate").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "navigate", Navigate);
          




        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("INavigate").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      INavigate(::Windows::UI::Xaml::Controls::INavigate^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::INavigate^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::INavigate^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::INavigate^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      INavigate *wrapperInstance = new INavigate(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::INavigate^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::INavigate^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::INavigate^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapINavigate(winRtInstance));
    }


    static void Navigate(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::INavigate^>(info.This())) {
        return;
      }

      INavigate *wrapper = INavigate::Unwrap<INavigate>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Type^>(info[0]))
      {
        try
        {
          ::Platform::Type^ arg0 = dynamic_cast<::Platform::Type^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          bool result;
          result = wrapper->_instance->Navigate(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }





    private:
      ::Windows::UI::Xaml::Controls::INavigate^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapINavigate(::Windows::UI::Xaml::Controls::INavigate^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::INavigate^ UnwrapINavigate(Local<Value> value);
  };

  Persistent<FunctionTemplate> INavigate::s_constructorTemplate;

  v8::Local<v8::Value> WrapINavigate(::Windows::UI::Xaml::Controls::INavigate^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(INavigate::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::INavigate^ UnwrapINavigate(Local<Value> value) {
     return INavigate::Unwrap<INavigate>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitINavigate(Local<Object> exports) {
    INavigate::Init(exports);
  }

  class ISemanticZoomInformation : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ISemanticZoomInformation").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "initializeViewChange", InitializeViewChange);
            Nan::SetPrototypeMethod(localRef, "completeViewChange", CompleteViewChange);
            Nan::SetPrototypeMethod(localRef, "makeVisible", MakeVisible);
            Nan::SetPrototypeMethod(localRef, "startViewChangeFrom", StartViewChangeFrom);
            Nan::SetPrototypeMethod(localRef, "startViewChangeTo", StartViewChangeTo);
            Nan::SetPrototypeMethod(localRef, "completeViewChangeFrom", CompleteViewChangeFrom);
            Nan::SetPrototypeMethod(localRef, "completeViewChangeTo", CompleteViewChangeTo);
          



          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isActiveView").ToLocalChecked(), IsActiveViewGetter, IsActiveViewSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isZoomedInView").ToLocalChecked(), IsZoomedInViewGetter, IsZoomedInViewSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("semanticZoomOwner").ToLocalChecked(), SemanticZoomOwnerGetter, SemanticZoomOwnerSetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("ISemanticZoomInformation").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ISemanticZoomInformation(::Windows::UI::Xaml::Controls::ISemanticZoomInformation^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ISemanticZoomInformation^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ISemanticZoomInformation^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ISemanticZoomInformation^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ISemanticZoomInformation *wrapperInstance = new ISemanticZoomInformation(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ISemanticZoomInformation^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ISemanticZoomInformation^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ISemanticZoomInformation^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapISemanticZoomInformation(winRtInstance));
    }


    static void InitializeViewChange(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ISemanticZoomInformation^>(info.This())) {
        return;
      }

      ISemanticZoomInformation *wrapper = ISemanticZoomInformation::Unwrap<ISemanticZoomInformation>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->InitializeViewChange();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void CompleteViewChange(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ISemanticZoomInformation^>(info.This())) {
        return;
      }

      ISemanticZoomInformation *wrapper = ISemanticZoomInformation::Unwrap<ISemanticZoomInformation>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->CompleteViewChange();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void MakeVisible(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ISemanticZoomInformation^>(info.This())) {
        return;
      }

      ISemanticZoomInformation *wrapper = ISemanticZoomInformation::Unwrap<ISemanticZoomInformation>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg0 = UnwrapSemanticZoomLocation(info[0]);
          
          wrapper->_instance->MakeVisible(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void StartViewChangeFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ISemanticZoomInformation^>(info.This())) {
        return;
      }

      ISemanticZoomInformation *wrapper = ISemanticZoomInformation::Unwrap<ISemanticZoomInformation>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg0 = UnwrapSemanticZoomLocation(info[0]);
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg1 = UnwrapSemanticZoomLocation(info[1]);
          
          wrapper->_instance->StartViewChangeFrom(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void StartViewChangeTo(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ISemanticZoomInformation^>(info.This())) {
        return;
      }

      ISemanticZoomInformation *wrapper = ISemanticZoomInformation::Unwrap<ISemanticZoomInformation>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg0 = UnwrapSemanticZoomLocation(info[0]);
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg1 = UnwrapSemanticZoomLocation(info[1]);
          
          wrapper->_instance->StartViewChangeTo(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void CompleteViewChangeFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ISemanticZoomInformation^>(info.This())) {
        return;
      }

      ISemanticZoomInformation *wrapper = ISemanticZoomInformation::Unwrap<ISemanticZoomInformation>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg0 = UnwrapSemanticZoomLocation(info[0]);
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg1 = UnwrapSemanticZoomLocation(info[1]);
          
          wrapper->_instance->CompleteViewChangeFrom(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void CompleteViewChangeTo(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ISemanticZoomInformation^>(info.This())) {
        return;
      }

      ISemanticZoomInformation *wrapper = ISemanticZoomInformation::Unwrap<ISemanticZoomInformation>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg0 = UnwrapSemanticZoomLocation(info[0]);
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg1 = UnwrapSemanticZoomLocation(info[1]);
          
          wrapper->_instance->CompleteViewChangeTo(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void IsActiveViewGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ISemanticZoomInformation^>(info.This())) {
        return;
      }

      ISemanticZoomInformation *wrapper = ISemanticZoomInformation::Unwrap<ISemanticZoomInformation>(info.This());

      try  {
        bool result = wrapper->_instance->IsActiveView;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsActiveViewSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ISemanticZoomInformation^>(info.This())) {
        return;
      }

      ISemanticZoomInformation *wrapper = ISemanticZoomInformation::Unwrap<ISemanticZoomInformation>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsActiveView = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsZoomedInViewGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ISemanticZoomInformation^>(info.This())) {
        return;
      }

      ISemanticZoomInformation *wrapper = ISemanticZoomInformation::Unwrap<ISemanticZoomInformation>(info.This());

      try  {
        bool result = wrapper->_instance->IsZoomedInView;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsZoomedInViewSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ISemanticZoomInformation^>(info.This())) {
        return;
      }

      ISemanticZoomInformation *wrapper = ISemanticZoomInformation::Unwrap<ISemanticZoomInformation>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsZoomedInView = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SemanticZoomOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ISemanticZoomInformation^>(info.This())) {
        return;
      }

      ISemanticZoomInformation *wrapper = ISemanticZoomInformation::Unwrap<ISemanticZoomInformation>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::SemanticZoom^ result = wrapper->_instance->SemanticZoomOwner;
        info.GetReturnValue().Set(WrapSemanticZoom(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SemanticZoomOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ISemanticZoomInformation^>(info.This())) {
        return;
      }

      ISemanticZoomInformation *wrapper = ISemanticZoomInformation::Unwrap<ISemanticZoomInformation>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::SemanticZoom^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::SemanticZoom^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SemanticZoomOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::ISemanticZoomInformation^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapISemanticZoomInformation(::Windows::UI::Xaml::Controls::ISemanticZoomInformation^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ISemanticZoomInformation^ UnwrapISemanticZoomInformation(Local<Value> value);
  };

  Persistent<FunctionTemplate> ISemanticZoomInformation::s_constructorTemplate;

  v8::Local<v8::Value> WrapISemanticZoomInformation(::Windows::UI::Xaml::Controls::ISemanticZoomInformation^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ISemanticZoomInformation::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ISemanticZoomInformation^ UnwrapISemanticZoomInformation(Local<Value> value) {
     return ISemanticZoomInformation::Unwrap<ISemanticZoomInformation>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitISemanticZoomInformation(Local<Object> exports) {
    ISemanticZoomInformation::Init(exports);
  }

  class SemanticZoomLocation : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("SemanticZoomLocation").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("item").ToLocalChecked(), ItemGetter, ItemSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("bounds").ToLocalChecked(), BoundsGetter, BoundsSetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("SemanticZoomLocation").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      SemanticZoomLocation(::Windows::UI::Xaml::Controls::SemanticZoomLocation^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::SemanticZoomLocation^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::SemanticZoomLocation();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      SemanticZoomLocation *wrapperInstance = new SemanticZoomLocation(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::SemanticZoomLocation^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapSemanticZoomLocation(winRtInstance));
    }





    static void ItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info.This())) {
        return;
      }

      SemanticZoomLocation *wrapper = SemanticZoomLocation::Unwrap<SemanticZoomLocation>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Item;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info.This())) {
        return;
      }

      SemanticZoomLocation *wrapper = SemanticZoomLocation::Unwrap<SemanticZoomLocation>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Item = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BoundsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info.This())) {
        return;
      }

      SemanticZoomLocation *wrapper = SemanticZoomLocation::Unwrap<SemanticZoomLocation>(info.This());

      try  {
        ::Windows::Foundation::Rect result = wrapper->_instance->Bounds;
        info.GetReturnValue().Set(NodeRT::Utils::RectToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BoundsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsRect(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info.This())) {
        return;
      }

      SemanticZoomLocation *wrapper = SemanticZoomLocation::Unwrap<SemanticZoomLocation>(info.This());

      try {

        ::Windows::Foundation::Rect winRtValue = NodeRT::Utils::RectFromJs(value);

        wrapper->_instance->Bounds = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapSemanticZoomLocation(::Windows::UI::Xaml::Controls::SemanticZoomLocation^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ UnwrapSemanticZoomLocation(Local<Value> value);
  };

  Persistent<FunctionTemplate> SemanticZoomLocation::s_constructorTemplate;

  v8::Local<v8::Value> WrapSemanticZoomLocation(::Windows::UI::Xaml::Controls::SemanticZoomLocation^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(SemanticZoomLocation::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ UnwrapSemanticZoomLocation(Local<Value> value) {
     return SemanticZoomLocation::Unwrap<SemanticZoomLocation>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitSemanticZoomLocation(Local<Object> exports) {
    SemanticZoomLocation::Init(exports);
  }

  class CandidateWindowBoundsChangedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("CandidateWindowBoundsChangedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("bounds").ToLocalChecked(), BoundsGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("CandidateWindowBoundsChangedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      CandidateWindowBoundsChangedEventArgs(::Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      CandidateWindowBoundsChangedEventArgs *wrapperInstance = new CandidateWindowBoundsChangedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapCandidateWindowBoundsChangedEventArgs(winRtInstance));
    }





    static void BoundsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs^>(info.This())) {
        return;
      }

      CandidateWindowBoundsChangedEventArgs *wrapper = CandidateWindowBoundsChangedEventArgs::Unwrap<CandidateWindowBoundsChangedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::Rect result = wrapper->_instance->Bounds;
        info.GetReturnValue().Set(NodeRT::Utils::RectToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapCandidateWindowBoundsChangedEventArgs(::Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs^ UnwrapCandidateWindowBoundsChangedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> CandidateWindowBoundsChangedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapCandidateWindowBoundsChangedEventArgs(::Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(CandidateWindowBoundsChangedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs^ UnwrapCandidateWindowBoundsChangedEventArgs(Local<Value> value) {
     return CandidateWindowBoundsChangedEventArgs::Unwrap<CandidateWindowBoundsChangedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitCandidateWindowBoundsChangedEventArgs(Local<Object> exports) {
    CandidateWindowBoundsChangedEventArgs::Init(exports);
  }

  class ChoosingGroupHeaderContainerEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ChoosingGroupHeaderContainerEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupHeaderContainer").ToLocalChecked(), GroupHeaderContainerGetter, GroupHeaderContainerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("group").ToLocalChecked(), GroupGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupIndex").ToLocalChecked(), GroupIndexGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("ChoosingGroupHeaderContainerEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ChoosingGroupHeaderContainerEventArgs(::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ChoosingGroupHeaderContainerEventArgs *wrapperInstance = new ChoosingGroupHeaderContainerEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapChoosingGroupHeaderContainerEventArgs(winRtInstance));
    }





    static void GroupHeaderContainerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^>(info.This())) {
        return;
      }

      ChoosingGroupHeaderContainerEventArgs *wrapper = ChoosingGroupHeaderContainerEventArgs::Unwrap<ChoosingGroupHeaderContainerEventArgs>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^ result = wrapper->_instance->GroupHeaderContainer;
        info.GetReturnValue().Set(WrapListViewBaseHeaderItem(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupHeaderContainerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^>(info.This())) {
        return;
      }

      ChoosingGroupHeaderContainerEventArgs *wrapper = ChoosingGroupHeaderContainerEventArgs::Unwrap<ChoosingGroupHeaderContainerEventArgs>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->GroupHeaderContainer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void GroupGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^>(info.This())) {
        return;
      }

      ChoosingGroupHeaderContainerEventArgs *wrapper = ChoosingGroupHeaderContainerEventArgs::Unwrap<ChoosingGroupHeaderContainerEventArgs>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Group;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^>(info.This())) {
        return;
      }

      ChoosingGroupHeaderContainerEventArgs *wrapper = ChoosingGroupHeaderContainerEventArgs::Unwrap<ChoosingGroupHeaderContainerEventArgs>(info.This());

      try  {
        int result = wrapper->_instance->GroupIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapChoosingGroupHeaderContainerEventArgs(::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^ UnwrapChoosingGroupHeaderContainerEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> ChoosingGroupHeaderContainerEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapChoosingGroupHeaderContainerEventArgs(::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ChoosingGroupHeaderContainerEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^ UnwrapChoosingGroupHeaderContainerEventArgs(Local<Value> value) {
     return ChoosingGroupHeaderContainerEventArgs::Unwrap<ChoosingGroupHeaderContainerEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitChoosingGroupHeaderContainerEventArgs(Local<Object> exports) {
    ChoosingGroupHeaderContainerEventArgs::Init(exports);
  }

  class ChoosingItemContainerEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ChoosingItemContainerEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainer").ToLocalChecked(), ItemContainerGetter, ItemContainerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isContainerPrepared").ToLocalChecked(), IsContainerPreparedGetter, IsContainerPreparedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("item").ToLocalChecked(), ItemGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemIndex").ToLocalChecked(), ItemIndexGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("ChoosingItemContainerEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ChoosingItemContainerEventArgs(::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ChoosingItemContainerEventArgs *wrapperInstance = new ChoosingItemContainerEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapChoosingItemContainerEventArgs(winRtInstance));
    }





    static void ItemContainerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^>(info.This())) {
        return;
      }

      ChoosingItemContainerEventArgs *wrapper = ChoosingItemContainerEventArgs::Unwrap<ChoosingItemContainerEventArgs>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::SelectorItem^ result = wrapper->_instance->ItemContainer;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "SelectorItem", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::SelectorItem^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^>(info.This())) {
        return;
      }

      ChoosingItemContainerEventArgs *wrapper = ChoosingItemContainerEventArgs::Unwrap<ChoosingItemContainerEventArgs>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::SelectorItem^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::SelectorItem^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsContainerPreparedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^>(info.This())) {
        return;
      }

      ChoosingItemContainerEventArgs *wrapper = ChoosingItemContainerEventArgs::Unwrap<ChoosingItemContainerEventArgs>(info.This());

      try  {
        bool result = wrapper->_instance->IsContainerPrepared;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsContainerPreparedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^>(info.This())) {
        return;
      }

      ChoosingItemContainerEventArgs *wrapper = ChoosingItemContainerEventArgs::Unwrap<ChoosingItemContainerEventArgs>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsContainerPrepared = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^>(info.This())) {
        return;
      }

      ChoosingItemContainerEventArgs *wrapper = ChoosingItemContainerEventArgs::Unwrap<ChoosingItemContainerEventArgs>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Item;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^>(info.This())) {
        return;
      }

      ChoosingItemContainerEventArgs *wrapper = ChoosingItemContainerEventArgs::Unwrap<ChoosingItemContainerEventArgs>(info.This());

      try  {
        int result = wrapper->_instance->ItemIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapChoosingItemContainerEventArgs(::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^ UnwrapChoosingItemContainerEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> ChoosingItemContainerEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapChoosingItemContainerEventArgs(::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ChoosingItemContainerEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^ UnwrapChoosingItemContainerEventArgs(Local<Value> value) {
     return ChoosingItemContainerEventArgs::Unwrap<ChoosingItemContainerEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitChoosingItemContainerEventArgs(Local<Object> exports) {
    ChoosingItemContainerEventArgs::Init(exports);
  }

  class ColumnDefinitionCollection : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ColumnDefinitionCollection").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "getAt", GetAt);
            Nan::SetPrototypeMethod(localRef, "getView", GetView);
            Nan::SetPrototypeMethod(localRef, "indexOf", IndexOf);
            Nan::SetPrototypeMethod(localRef, "setAt", SetAt);
            Nan::SetPrototypeMethod(localRef, "insertAt", InsertAt);
            Nan::SetPrototypeMethod(localRef, "removeAt", RemoveAt);
            Nan::SetPrototypeMethod(localRef, "append", Append);
            Nan::SetPrototypeMethod(localRef, "removeAtEnd", RemoveAtEnd);
            Nan::SetPrototypeMethod(localRef, "clear", Clear);
            Nan::SetPrototypeMethod(localRef, "getMany", GetMany);
            Nan::SetPrototypeMethod(localRef, "replaceAll", ReplaceAll);
            Nan::SetPrototypeMethod(localRef, "first", First);
          




        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("ColumnDefinitionCollection").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ColumnDefinitionCollection(::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ColumnDefinitionCollection *wrapperInstance = new ColumnDefinitionCollection(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapColumnDefinitionCollection(winRtInstance));
    }


    static void GetAt(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^>(info.This())) {
        return;
      }

      ColumnDefinitionCollection *wrapper = ColumnDefinitionCollection::Unwrap<ColumnDefinitionCollection>(info.This());

      if (info.Length() == 1
        && info[0]->IsUint32())
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::ColumnDefinition^ result;
          result = wrapper->_instance->GetAt(arg0);
          info.GetReturnValue().Set(WrapColumnDefinition(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetView(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^>(info.This())) {
        return;
      }

      ColumnDefinitionCollection *wrapper = ColumnDefinitionCollection::Unwrap<ColumnDefinitionCollection>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Controls::ColumnDefinition^>^ result;
          result = wrapper->_instance->GetView();
          info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Controls::ColumnDefinition^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Controls::ColumnDefinition^ val) -> Local<Value> {
              return WrapColumnDefinition(val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinition^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Controls::ColumnDefinition^ {
              return UnwrapColumnDefinition(value);
            }
          ));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void IndexOf(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^>(info.This())) {
        return;
      }

      ColumnDefinitionCollection *wrapper = ColumnDefinitionCollection::Unwrap<ColumnDefinitionCollection>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinition^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::ColumnDefinition^ arg0 = UnwrapColumnDefinition(info[0]);
          unsigned int arg1;
          
          bool result;
          result = wrapper->_instance->IndexOf(arg0, &arg1);
          Local<Object> resObj = Nan::New<Object>();
          Nan::Set(resObj, Nan::New<String>("boolean").ToLocalChecked(), Nan::New<Boolean>(result));
          Nan::Set(resObj, Nan::New<String>("index").ToLocalChecked(), Nan::New<Integer>(arg1));
          info.GetReturnValue().Set(resObj);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void SetAt(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^>(info.This())) {
        return;
      }

      ColumnDefinitionCollection *wrapper = ColumnDefinitionCollection::Unwrap<ColumnDefinitionCollection>(info.This());

      if (info.Length() == 2
        && info[0]->IsUint32()
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinition^>(info[1]))
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          ::Windows::UI::Xaml::Controls::ColumnDefinition^ arg1 = UnwrapColumnDefinition(info[1]);
          
          wrapper->_instance->SetAt(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void InsertAt(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^>(info.This())) {
        return;
      }

      ColumnDefinitionCollection *wrapper = ColumnDefinitionCollection::Unwrap<ColumnDefinitionCollection>(info.This());

      if (info.Length() == 2
        && info[0]->IsUint32()
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinition^>(info[1]))
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          ::Windows::UI::Xaml::Controls::ColumnDefinition^ arg1 = UnwrapColumnDefinition(info[1]);
          
          wrapper->_instance->InsertAt(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void RemoveAt(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^>(info.This())) {
        return;
      }

      ColumnDefinitionCollection *wrapper = ColumnDefinitionCollection::Unwrap<ColumnDefinitionCollection>(info.This());

      if (info.Length() == 1
        && info[0]->IsUint32())
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          
          wrapper->_instance->RemoveAt(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Append(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^>(info.This())) {
        return;
      }

      ColumnDefinitionCollection *wrapper = ColumnDefinitionCollection::Unwrap<ColumnDefinitionCollection>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinition^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::ColumnDefinition^ arg0 = UnwrapColumnDefinition(info[0]);
          
          wrapper->_instance->Append(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void RemoveAtEnd(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^>(info.This())) {
        return;
      }

      ColumnDefinitionCollection *wrapper = ColumnDefinitionCollection::Unwrap<ColumnDefinitionCollection>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->RemoveAtEnd();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Clear(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^>(info.This())) {
        return;
      }

      ColumnDefinitionCollection *wrapper = ColumnDefinitionCollection::Unwrap<ColumnDefinitionCollection>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->Clear();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetMany(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Not implemented")));
    }
    static void ReplaceAll(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^>(info.This())) {
        return;
      }

      ColumnDefinitionCollection *wrapper = ColumnDefinitionCollection::Unwrap<ColumnDefinitionCollection>(info.This());

      if (info.Length() == 1
        && (NodeRT::Utils::IsWinRtWrapperOf<::Platform::Array<::Windows::UI::Xaml::Controls::ColumnDefinition^>^>(info[0]) || info[0]->IsArray()))
      {
        try
        {
          ::Platform::Array<::Windows::UI::Xaml::Controls::ColumnDefinition^>^ arg0 = 
            [] (v8::Local<v8::Value> value) -> ::Platform::Array<::Windows::UI::Xaml::Controls::ColumnDefinition^>^
            {
              if (value->IsArray())
              {
                return NodeRT::Collections::JsArrayToWinrtArray<::Windows::UI::Xaml::Controls::ColumnDefinition^>(value.As<Array>(), 
                 [](Local<Value> value) -> bool {
                   return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinition^>(value);
                 },
                 [](Local<Value> value) -> ::Windows::UI::Xaml::Controls::ColumnDefinition^ {
                   return UnwrapColumnDefinition(value);
                 }
                );
              }
              else
              {
                return dynamic_cast<::Platform::Array<::Windows::UI::Xaml::Controls::ColumnDefinition^>^>(NodeRT::Utils::GetObjectInstance(value));
              }
            } (info[0]);
          
          wrapper->_instance->ReplaceAll(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void First(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^>(info.This())) {
        return;
      }

      ColumnDefinitionCollection *wrapper = ColumnDefinitionCollection::Unwrap<ColumnDefinitionCollection>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          ::Windows::Foundation::Collections::IIterator<::Windows::UI::Xaml::Controls::ColumnDefinition^>^ result;
          result = wrapper->_instance->First();
          info.GetReturnValue().Set(NodeRT::Collections::IteratorWrapper<::Windows::UI::Xaml::Controls::ColumnDefinition^>::CreateIteratorWrapper(result, 
            [](::Windows::UI::Xaml::Controls::ColumnDefinition^ val) -> Local<Value> {
              return WrapColumnDefinition(val);
            }
          ));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }





    private:
      ::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapColumnDefinitionCollection(::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^ UnwrapColumnDefinitionCollection(Local<Value> value);
  };

  Persistent<FunctionTemplate> ColumnDefinitionCollection::s_constructorTemplate;

  v8::Local<v8::Value> WrapColumnDefinitionCollection(::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ColumnDefinitionCollection::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^ UnwrapColumnDefinitionCollection(Local<Value> value) {
     return ColumnDefinitionCollection::Unwrap<ColumnDefinitionCollection>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitColumnDefinitionCollection(Local<Object> exports) {
    ColumnDefinitionCollection::Init(exports);
  }

  class DataTemplateSelector : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("DataTemplateSelector").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "selectTemplate", SelectTemplate);
            Nan::SetPrototypeMethod(localRef, "selectTemplateCore", SelectTemplateCore);
          




        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("DataTemplateSelector").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      DataTemplateSelector(::Windows::UI::Xaml::Controls::DataTemplateSelector^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::DataTemplateSelector^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::DataTemplateSelector();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      DataTemplateSelector *wrapperInstance = new DataTemplateSelector(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::DataTemplateSelector^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapDataTemplateSelector(winRtInstance));
    }


    static void SelectTemplate(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(info.This())) {
        return;
      }

      DataTemplateSelector *wrapper = DataTemplateSelector::Unwrap<DataTemplateSelector>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[1]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::UI::Xaml::DependencyObject^ arg1 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          ::Windows::UI::Xaml::DataTemplate^ result;
          result = wrapper->_instance->SelectTemplate(arg0, arg1);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Windows::UI::Xaml::DataTemplate^ result;
          result = wrapper->_instance->SelectTemplate(arg0);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void SelectTemplateCore(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(info.This())) {
        return;
      }

      DataTemplateSelector *wrapper = DataTemplateSelector::Unwrap<DataTemplateSelector>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[1]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::UI::Xaml::DependencyObject^ arg1 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          ::Windows::UI::Xaml::DataTemplate^ result;
          result = wrapper->_instance->SelectTemplateCore(arg0, arg1);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Windows::UI::Xaml::DataTemplate^ result;
          result = wrapper->_instance->SelectTemplateCore(arg0);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }





    private:
      ::Windows::UI::Xaml::Controls::DataTemplateSelector^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapDataTemplateSelector(::Windows::UI::Xaml::Controls::DataTemplateSelector^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::DataTemplateSelector^ UnwrapDataTemplateSelector(Local<Value> value);
  };

  Persistent<FunctionTemplate> DataTemplateSelector::s_constructorTemplate;

  v8::Local<v8::Value> WrapDataTemplateSelector(::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(DataTemplateSelector::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::DataTemplateSelector^ UnwrapDataTemplateSelector(Local<Value> value) {
     return DataTemplateSelector::Unwrap<DataTemplateSelector>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitDataTemplateSelector(Local<Object> exports) {
    DataTemplateSelector::Init(exports);
  }

  class DragItemsCompletedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("DragItemsCompletedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dropResult").ToLocalChecked(), DropResultGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("items").ToLocalChecked(), ItemsGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("DragItemsCompletedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      DragItemsCompletedEventArgs(::Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      DragItemsCompletedEventArgs *wrapperInstance = new DragItemsCompletedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapDragItemsCompletedEventArgs(winRtInstance));
    }





    static void DropResultGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs^>(info.This())) {
        return;
      }

      DragItemsCompletedEventArgs *wrapper = DragItemsCompletedEventArgs::Unwrap<DragItemsCompletedEventArgs>(info.This());

      try  {
        ::Windows::ApplicationModel::DataTransfer::DataPackageOperation result = wrapper->_instance->DropResult;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs^>(info.This())) {
        return;
      }

      DragItemsCompletedEventArgs *wrapper = DragItemsCompletedEventArgs::Unwrap<DragItemsCompletedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Platform::Object^>^ result = wrapper->_instance->Items;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Platform::Object^>::CreateVectorViewWrapper(result, 
            [](::Platform::Object^ val) -> Local<Value> {
              return CreateOpaqueWrapper(val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value);
            },
            [](Local<Value> value) -> ::Platform::Object^ {
              return dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapDragItemsCompletedEventArgs(::Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs^ UnwrapDragItemsCompletedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> DragItemsCompletedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapDragItemsCompletedEventArgs(::Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(DragItemsCompletedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs^ UnwrapDragItemsCompletedEventArgs(Local<Value> value) {
     return DragItemsCompletedEventArgs::Unwrap<DragItemsCompletedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitDragItemsCompletedEventArgs(Local<Object> exports) {
    DragItemsCompletedEventArgs::Init(exports);
  }

  class StyleSelector : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("StyleSelector").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "selectStyle", SelectStyle);
            Nan::SetPrototypeMethod(localRef, "selectStyleCore", SelectStyleCore);
          




        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("StyleSelector").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      StyleSelector(::Windows::UI::Xaml::Controls::StyleSelector^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::StyleSelector^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StyleSelector^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::StyleSelector^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::StyleSelector();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      StyleSelector *wrapperInstance = new StyleSelector(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StyleSelector^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::StyleSelector^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::StyleSelector^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapStyleSelector(winRtInstance));
    }


    static void SelectStyle(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StyleSelector^>(info.This())) {
        return;
      }

      StyleSelector *wrapper = StyleSelector::Unwrap<StyleSelector>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[1]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::UI::Xaml::DependencyObject^ arg1 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          ::Windows::UI::Xaml::Style^ result;
          result = wrapper->_instance->SelectStyle(arg0, arg1);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void SelectStyleCore(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StyleSelector^>(info.This())) {
        return;
      }

      StyleSelector *wrapper = StyleSelector::Unwrap<StyleSelector>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[1]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::UI::Xaml::DependencyObject^ arg1 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          ::Windows::UI::Xaml::Style^ result;
          result = wrapper->_instance->SelectStyleCore(arg0, arg1);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }





    private:
      ::Windows::UI::Xaml::Controls::StyleSelector^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapStyleSelector(::Windows::UI::Xaml::Controls::StyleSelector^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::StyleSelector^ UnwrapStyleSelector(Local<Value> value);
  };

  Persistent<FunctionTemplate> StyleSelector::s_constructorTemplate;

  v8::Local<v8::Value> WrapStyleSelector(::Windows::UI::Xaml::Controls::StyleSelector^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(StyleSelector::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::StyleSelector^ UnwrapStyleSelector(Local<Value> value) {
     return StyleSelector::Unwrap<StyleSelector>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitStyleSelector(Local<Object> exports) {
    StyleSelector::Init(exports);
  }

  class GroupStyle : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("GroupStyle").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("panel").ToLocalChecked(), PanelGetter, PanelSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("hidesIfEmpty").ToLocalChecked(), HidesIfEmptyGetter, HidesIfEmptySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerTemplateSelector").ToLocalChecked(), HeaderTemplateSelectorGetter, HeaderTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerTemplate").ToLocalChecked(), HeaderTemplateGetter, HeaderTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("containerStyleSelector").ToLocalChecked(), ContainerStyleSelectorGetter, ContainerStyleSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("containerStyle").ToLocalChecked(), ContainerStyleGetter, ContainerStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerContainerStyle").ToLocalChecked(), HeaderContainerStyleGetter, HeaderContainerStyleSetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("GroupStyle").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      GroupStyle(::Windows::UI::Xaml::Controls::GroupStyle^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::GroupStyle^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyle^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::GroupStyle^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::GroupStyle();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      GroupStyle *wrapperInstance = new GroupStyle(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyle^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::GroupStyle^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::GroupStyle^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapGroupStyle(winRtInstance));
    }





    static void PanelGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyle^>(info.This())) {
        return;
      }

      GroupStyle *wrapper = GroupStyle::Unwrap<GroupStyle>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ result = wrapper->_instance->Panel;
        info.GetReturnValue().Set(WrapItemsPanelTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PanelSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyle^>(info.This())) {
        return;
      }

      GroupStyle *wrapper = GroupStyle::Unwrap<GroupStyle>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Panel = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HidesIfEmptyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyle^>(info.This())) {
        return;
      }

      GroupStyle *wrapper = GroupStyle::Unwrap<GroupStyle>(info.This());

      try  {
        bool result = wrapper->_instance->HidesIfEmpty;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HidesIfEmptySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyle^>(info.This())) {
        return;
      }

      GroupStyle *wrapper = GroupStyle::Unwrap<GroupStyle>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->HidesIfEmpty = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyle^>(info.This())) {
        return;
      }

      GroupStyle *wrapper = GroupStyle::Unwrap<GroupStyle>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->HeaderTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyle^>(info.This())) {
        return;
      }

      GroupStyle *wrapper = GroupStyle::Unwrap<GroupStyle>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyle^>(info.This())) {
        return;
      }

      GroupStyle *wrapper = GroupStyle::Unwrap<GroupStyle>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->HeaderTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyle^>(info.This())) {
        return;
      }

      GroupStyle *wrapper = GroupStyle::Unwrap<GroupStyle>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContainerStyleSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyle^>(info.This())) {
        return;
      }

      GroupStyle *wrapper = GroupStyle::Unwrap<GroupStyle>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::StyleSelector^ result = wrapper->_instance->ContainerStyleSelector;
        info.GetReturnValue().Set(WrapStyleSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContainerStyleSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StyleSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyle^>(info.This())) {
        return;
      }

      GroupStyle *wrapper = GroupStyle::Unwrap<GroupStyle>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::StyleSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::StyleSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContainerStyleSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContainerStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyle^>(info.This())) {
        return;
      }

      GroupStyle *wrapper = GroupStyle::Unwrap<GroupStyle>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->ContainerStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContainerStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyle^>(info.This())) {
        return;
      }

      GroupStyle *wrapper = GroupStyle::Unwrap<GroupStyle>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContainerStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderContainerStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyle^>(info.This())) {
        return;
      }

      GroupStyle *wrapper = GroupStyle::Unwrap<GroupStyle>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->HeaderContainerStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderContainerStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyle^>(info.This())) {
        return;
      }

      GroupStyle *wrapper = GroupStyle::Unwrap<GroupStyle>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderContainerStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::GroupStyle^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapGroupStyle(::Windows::UI::Xaml::Controls::GroupStyle^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::GroupStyle^ UnwrapGroupStyle(Local<Value> value);
  };

  Persistent<FunctionTemplate> GroupStyle::s_constructorTemplate;

  v8::Local<v8::Value> WrapGroupStyle(::Windows::UI::Xaml::Controls::GroupStyle^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(GroupStyle::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::GroupStyle^ UnwrapGroupStyle(Local<Value> value) {
     return GroupStyle::Unwrap<GroupStyle>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitGroupStyle(Local<Object> exports) {
    GroupStyle::Init(exports);
  }

  class GroupStyleSelector : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("GroupStyleSelector").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "selectGroupStyle", SelectGroupStyle);
            Nan::SetPrototypeMethod(localRef, "selectGroupStyleCore", SelectGroupStyleCore);
          




        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("GroupStyleSelector").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      GroupStyleSelector(::Windows::UI::Xaml::Controls::GroupStyleSelector^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::GroupStyleSelector^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::GroupStyleSelector^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::GroupStyleSelector();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      GroupStyleSelector *wrapperInstance = new GroupStyleSelector(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::GroupStyleSelector^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::GroupStyleSelector^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapGroupStyleSelector(winRtInstance));
    }


    static void SelectGroupStyle(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(info.This())) {
        return;
      }

      GroupStyleSelector *wrapper = GroupStyleSelector::Unwrap<GroupStyleSelector>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0])
        && info[1]->IsUint32())
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          unsigned int arg1 = static_cast<unsigned int>(Nan::To<uint32_t>(info[1]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::GroupStyle^ result;
          result = wrapper->_instance->SelectGroupStyle(arg0, arg1);
          info.GetReturnValue().Set(WrapGroupStyle(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void SelectGroupStyleCore(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(info.This())) {
        return;
      }

      GroupStyleSelector *wrapper = GroupStyleSelector::Unwrap<GroupStyleSelector>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0])
        && info[1]->IsUint32())
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          unsigned int arg1 = static_cast<unsigned int>(Nan::To<uint32_t>(info[1]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::GroupStyle^ result;
          result = wrapper->_instance->SelectGroupStyleCore(arg0, arg1);
          info.GetReturnValue().Set(WrapGroupStyle(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }





    private:
      ::Windows::UI::Xaml::Controls::GroupStyleSelector^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapGroupStyleSelector(::Windows::UI::Xaml::Controls::GroupStyleSelector^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::GroupStyleSelector^ UnwrapGroupStyleSelector(Local<Value> value);
  };

  Persistent<FunctionTemplate> GroupStyleSelector::s_constructorTemplate;

  v8::Local<v8::Value> WrapGroupStyleSelector(::Windows::UI::Xaml::Controls::GroupStyleSelector^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(GroupStyleSelector::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::GroupStyleSelector^ UnwrapGroupStyleSelector(Local<Value> value) {
     return GroupStyleSelector::Unwrap<GroupStyleSelector>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitGroupStyleSelector(Local<Object> exports) {
    GroupStyleSelector::Init(exports);
  }

  class ItemCollection : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ItemCollection").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "getAt", GetAt);
            Nan::SetPrototypeMethod(localRef, "getView", GetView);
            Nan::SetPrototypeMethod(localRef, "indexOf", IndexOf);
            Nan::SetPrototypeMethod(localRef, "setAt", SetAt);
            Nan::SetPrototypeMethod(localRef, "insertAt", InsertAt);
            Nan::SetPrototypeMethod(localRef, "removeAt", RemoveAt);
            Nan::SetPrototypeMethod(localRef, "append", Append);
            Nan::SetPrototypeMethod(localRef, "removeAtEnd", RemoveAtEnd);
            Nan::SetPrototypeMethod(localRef, "clear", Clear);
            Nan::SetPrototypeMethod(localRef, "getMany", GetMany);
            Nan::SetPrototypeMethod(localRef, "replaceAll", ReplaceAll);
            Nan::SetPrototypeMethod(localRef, "first", First);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);


        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("ItemCollection").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ItemCollection(::Windows::UI::Xaml::Controls::ItemCollection^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ItemCollection^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemCollection^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ItemCollection^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ItemCollection *wrapperInstance = new ItemCollection(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemCollection^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ItemCollection^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ItemCollection^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapItemCollection(winRtInstance));
    }


    static void GetAt(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemCollection^>(info.This())) {
        return;
      }

      ItemCollection *wrapper = ItemCollection::Unwrap<ItemCollection>(info.This());

      if (info.Length() == 1
        && info[0]->IsUint32())
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          
          ::Platform::Object^ result;
          result = wrapper->_instance->GetAt(arg0);
          info.GetReturnValue().Set(CreateOpaqueWrapper(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetView(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemCollection^>(info.This())) {
        return;
      }

      ItemCollection *wrapper = ItemCollection::Unwrap<ItemCollection>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          ::Windows::Foundation::Collections::IVectorView<::Platform::Object^>^ result;
          result = wrapper->_instance->GetView();
          info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Platform::Object^>::CreateVectorViewWrapper(result, 
            [](::Platform::Object^ val) -> Local<Value> {
              return CreateOpaqueWrapper(val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value);
            },
            [](Local<Value> value) -> ::Platform::Object^ {
              return dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void IndexOf(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemCollection^>(info.This())) {
        return;
      }

      ItemCollection *wrapper = ItemCollection::Unwrap<ItemCollection>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          unsigned int arg1;
          
          bool result;
          result = wrapper->_instance->IndexOf(arg0, &arg1);
          Local<Object> resObj = Nan::New<Object>();
          Nan::Set(resObj, Nan::New<String>("boolean").ToLocalChecked(), Nan::New<Boolean>(result));
          Nan::Set(resObj, Nan::New<String>("index").ToLocalChecked(), Nan::New<Integer>(arg1));
          info.GetReturnValue().Set(resObj);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void SetAt(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemCollection^>(info.This())) {
        return;
      }

      ItemCollection *wrapper = ItemCollection::Unwrap<ItemCollection>(info.This());

      if (info.Length() == 2
        && info[0]->IsUint32()
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1]))
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          wrapper->_instance->SetAt(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void InsertAt(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemCollection^>(info.This())) {
        return;
      }

      ItemCollection *wrapper = ItemCollection::Unwrap<ItemCollection>(info.This());

      if (info.Length() == 2
        && info[0]->IsUint32()
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1]))
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          wrapper->_instance->InsertAt(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void RemoveAt(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemCollection^>(info.This())) {
        return;
      }

      ItemCollection *wrapper = ItemCollection::Unwrap<ItemCollection>(info.This());

      if (info.Length() == 1
        && info[0]->IsUint32())
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          
          wrapper->_instance->RemoveAt(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Append(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemCollection^>(info.This())) {
        return;
      }

      ItemCollection *wrapper = ItemCollection::Unwrap<ItemCollection>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->Append(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void RemoveAtEnd(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemCollection^>(info.This())) {
        return;
      }

      ItemCollection *wrapper = ItemCollection::Unwrap<ItemCollection>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->RemoveAtEnd();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Clear(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemCollection^>(info.This())) {
        return;
      }

      ItemCollection *wrapper = ItemCollection::Unwrap<ItemCollection>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->Clear();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetMany(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Not implemented")));
    }
    static void ReplaceAll(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemCollection^>(info.This())) {
        return;
      }

      ItemCollection *wrapper = ItemCollection::Unwrap<ItemCollection>(info.This());

      if (info.Length() == 1
        && (NodeRT::Utils::IsWinRtWrapperOf<::Platform::Array<::Platform::Object^>^>(info[0]) || info[0]->IsArray()))
      {
        try
        {
          ::Platform::Array<::Platform::Object^>^ arg0 = 
            [] (v8::Local<v8::Value> value) -> ::Platform::Array<::Platform::Object^>^
            {
              if (value->IsArray())
              {
                return NodeRT::Collections::JsArrayToWinrtArray<::Platform::Object^>(value.As<Array>(), 
                 [](Local<Value> value) -> bool {
                   return NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value);
                 },
                 [](Local<Value> value) -> ::Platform::Object^ {
                   return dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));
                 }
                );
              }
              else
              {
                return dynamic_cast<::Platform::Array<::Platform::Object^>^>(NodeRT::Utils::GetObjectInstance(value));
              }
            } (info[0]);
          
          wrapper->_instance->ReplaceAll(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void First(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemCollection^>(info.This())) {
        return;
      }

      ItemCollection *wrapper = ItemCollection::Unwrap<ItemCollection>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          ::Windows::Foundation::Collections::IIterator<::Platform::Object^>^ result;
          result = wrapper->_instance->First();
          info.GetReturnValue().Set(NodeRT::Collections::IteratorWrapper<::Platform::Object^>::CreateIteratorWrapper(result, 
            [](::Platform::Object^ val) -> Local<Value> {
              return CreateOpaqueWrapper(val);
            }
          ));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }





    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"vectorChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemCollection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemCollection *wrapper = ItemCollection::Unwrap<ItemCollection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->VectorChanged::add(
            ref new ::Windows::Foundation::Collections::VectorChangedEventHandler<::Platform::Object^>(
            [callbackObjPtr](::Windows::Foundation::Collections::IObservableVector<::Platform::Object^>^ arg0, ::Windows::Foundation::Collections::IVectorChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "IObservableVector`1", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "IVectorChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"vectorChanged", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"vectorChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemCollection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemCollection *wrapper = ItemCollection::Unwrap<ItemCollection>(info.This());
          wrapper->_instance->VectorChanged::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ItemCollection^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapItemCollection(::Windows::UI::Xaml::Controls::ItemCollection^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ItemCollection^ UnwrapItemCollection(Local<Value> value);
  };

  Persistent<FunctionTemplate> ItemCollection::s_constructorTemplate;

  v8::Local<v8::Value> WrapItemCollection(::Windows::UI::Xaml::Controls::ItemCollection^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ItemCollection::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ItemCollection^ UnwrapItemCollection(Local<Value> value) {
     return ItemCollection::Unwrap<ItemCollection>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitItemCollection(Local<Object> exports) {
    ItemCollection::Init(exports);
  }

  class ItemContainerGenerator : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ItemContainerGenerator").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "itemFromContainer", ItemFromContainer);
            Nan::SetPrototypeMethod(localRef, "containerFromItem", ContainerFromItem);
            Nan::SetPrototypeMethod(localRef, "indexFromContainer", IndexFromContainer);
            Nan::SetPrototypeMethod(localRef, "containerFromIndex", ContainerFromIndex);
            Nan::SetPrototypeMethod(localRef, "getItemContainerGeneratorForPanel", GetItemContainerGeneratorForPanel);
            Nan::SetPrototypeMethod(localRef, "startAt", StartAt);
            Nan::SetPrototypeMethod(localRef, "stop", Stop);
            Nan::SetPrototypeMethod(localRef, "generateNext", GenerateNext);
            Nan::SetPrototypeMethod(localRef, "prepareItemContainer", PrepareItemContainer);
            Nan::SetPrototypeMethod(localRef, "removeAll", RemoveAll);
            Nan::SetPrototypeMethod(localRef, "remove", Remove);
            Nan::SetPrototypeMethod(localRef, "generatorPositionFromIndex", GeneratorPositionFromIndex);
            Nan::SetPrototypeMethod(localRef, "indexFromGeneratorPosition", IndexFromGeneratorPosition);
            Nan::SetPrototypeMethod(localRef, "recycle", Recycle);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);


        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("ItemContainerGenerator").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ItemContainerGenerator(::Windows::UI::Xaml::Controls::ItemContainerGenerator^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ItemContainerGenerator^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemContainerGenerator^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ItemContainerGenerator^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ItemContainerGenerator *wrapperInstance = new ItemContainerGenerator(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemContainerGenerator^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ItemContainerGenerator^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ItemContainerGenerator^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapItemContainerGenerator(winRtInstance));
    }


    static void ItemFromContainer(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemContainerGenerator^>(info.This())) {
        return;
      }

      ItemContainerGenerator *wrapper = ItemContainerGenerator::Unwrap<ItemContainerGenerator>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Platform::Object^ result;
          result = wrapper->_instance->ItemFromContainer(arg0);
          info.GetReturnValue().Set(CreateOpaqueWrapper(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void ContainerFromItem(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemContainerGenerator^>(info.This())) {
        return;
      }

      ItemContainerGenerator *wrapper = ItemContainerGenerator::Unwrap<ItemContainerGenerator>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Windows::UI::Xaml::DependencyObject^ result;
          result = wrapper->_instance->ContainerFromItem(arg0);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void IndexFromContainer(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemContainerGenerator^>(info.This())) {
        return;
      }

      ItemContainerGenerator *wrapper = ItemContainerGenerator::Unwrap<ItemContainerGenerator>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          int result;
          result = wrapper->_instance->IndexFromContainer(arg0);
          info.GetReturnValue().Set(Nan::New<Integer>(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void ContainerFromIndex(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemContainerGenerator^>(info.This())) {
        return;
      }

      ItemContainerGenerator *wrapper = ItemContainerGenerator::Unwrap<ItemContainerGenerator>(info.This());

      if (info.Length() == 1
        && info[0]->IsInt32())
      {
        try
        {
          int arg0 = static_cast<int>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          
          ::Windows::UI::Xaml::DependencyObject^ result;
          result = wrapper->_instance->ContainerFromIndex(arg0);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetItemContainerGeneratorForPanel(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemContainerGenerator^>(info.This())) {
        return;
      }

      ItemContainerGenerator *wrapper = ItemContainerGenerator::Unwrap<ItemContainerGenerator>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::Panel^ arg0 = UnwrapPanel(info[0]);
          
          ::Windows::UI::Xaml::Controls::ItemContainerGenerator^ result;
          result = wrapper->_instance->GetItemContainerGeneratorForPanel(arg0);
          info.GetReturnValue().Set(WrapItemContainerGenerator(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void StartAt(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemContainerGenerator^>(info.This())) {
        return;
      }

      ItemContainerGenerator *wrapper = ItemContainerGenerator::Unwrap<ItemContainerGenerator>(info.This());

      if (info.Length() == 3
        && IsGeneratorPositionJsObject(info[0])
        && info[1]->IsInt32()
        && info[2]->IsBoolean())
      {
        try
        {
          ::Windows::UI::Xaml::Controls::Primitives::GeneratorPosition arg0 = GeneratorPositionFromJsObject(info[0]);
          ::Windows::UI::Xaml::Controls::Primitives::GeneratorDirection arg1 = static_cast<::Windows::UI::Xaml::Controls::Primitives::GeneratorDirection>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          bool arg2 = Nan::To<bool>(info[2]).FromMaybe(false);
          
          wrapper->_instance->StartAt(arg0, arg1, arg2);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Stop(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemContainerGenerator^>(info.This())) {
        return;
      }

      ItemContainerGenerator *wrapper = ItemContainerGenerator::Unwrap<ItemContainerGenerator>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->Stop();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GenerateNext(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemContainerGenerator^>(info.This())) {
        return;
      }

      ItemContainerGenerator *wrapper = ItemContainerGenerator::Unwrap<ItemContainerGenerator>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          bool arg0;
          
          ::Windows::UI::Xaml::DependencyObject^ result;
          result = wrapper->_instance->GenerateNext(&arg0);
          Local<Object> resObj = Nan::New<Object>();
          Nan::Set(resObj, Nan::New<String>("dependencyObject").ToLocalChecked(), NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
          Nan::Set(resObj, Nan::New<String>("isNewlyRealized").ToLocalChecked(), Nan::New<Boolean>(arg0));
          info.GetReturnValue().Set(resObj);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void PrepareItemContainer(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemContainerGenerator^>(info.This())) {
        return;
      }

      ItemContainerGenerator *wrapper = ItemContainerGenerator::Unwrap<ItemContainerGenerator>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->PrepareItemContainer(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void RemoveAll(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemContainerGenerator^>(info.This())) {
        return;
      }

      ItemContainerGenerator *wrapper = ItemContainerGenerator::Unwrap<ItemContainerGenerator>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->RemoveAll();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Remove(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemContainerGenerator^>(info.This())) {
        return;
      }

      ItemContainerGenerator *wrapper = ItemContainerGenerator::Unwrap<ItemContainerGenerator>(info.This());

      if (info.Length() == 2
        && IsGeneratorPositionJsObject(info[0])
        && info[1]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::Controls::Primitives::GeneratorPosition arg0 = GeneratorPositionFromJsObject(info[0]);
          int arg1 = static_cast<int>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          wrapper->_instance->Remove(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GeneratorPositionFromIndex(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemContainerGenerator^>(info.This())) {
        return;
      }

      ItemContainerGenerator *wrapper = ItemContainerGenerator::Unwrap<ItemContainerGenerator>(info.This());

      if (info.Length() == 1
        && info[0]->IsInt32())
      {
        try
        {
          int arg0 = static_cast<int>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::Primitives::GeneratorPosition result;
          result = wrapper->_instance->GeneratorPositionFromIndex(arg0);
          info.GetReturnValue().Set(GeneratorPositionToJsObject(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void IndexFromGeneratorPosition(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemContainerGenerator^>(info.This())) {
        return;
      }

      ItemContainerGenerator *wrapper = ItemContainerGenerator::Unwrap<ItemContainerGenerator>(info.This());

      if (info.Length() == 1
        && IsGeneratorPositionJsObject(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::Primitives::GeneratorPosition arg0 = GeneratorPositionFromJsObject(info[0]);
          
          int result;
          result = wrapper->_instance->IndexFromGeneratorPosition(arg0);
          info.GetReturnValue().Set(Nan::New<Integer>(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Recycle(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemContainerGenerator^>(info.This())) {
        return;
      }

      ItemContainerGenerator *wrapper = ItemContainerGenerator::Unwrap<ItemContainerGenerator>(info.This());

      if (info.Length() == 2
        && IsGeneratorPositionJsObject(info[0])
        && info[1]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::Controls::Primitives::GeneratorPosition arg0 = GeneratorPositionFromJsObject(info[0]);
          int arg1 = static_cast<int>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          wrapper->_instance->Recycle(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }





    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"itemsChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemContainerGenerator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemContainerGenerator *wrapper = ItemContainerGenerator::Unwrap<ItemContainerGenerator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ItemsChanged::add(
            ref new ::Windows::UI::Xaml::Controls::Primitives::ItemsChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::Primitives::ItemsChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "ItemsChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"itemsChanged", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"itemsChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemContainerGenerator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemContainerGenerator *wrapper = ItemContainerGenerator::Unwrap<ItemContainerGenerator>(info.This());
          wrapper->_instance->ItemsChanged::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ItemContainerGenerator^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapItemContainerGenerator(::Windows::UI::Xaml::Controls::ItemContainerGenerator^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ItemContainerGenerator^ UnwrapItemContainerGenerator(Local<Value> value);
  };

  Persistent<FunctionTemplate> ItemContainerGenerator::s_constructorTemplate;

  v8::Local<v8::Value> WrapItemContainerGenerator(::Windows::UI::Xaml::Controls::ItemContainerGenerator^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ItemContainerGenerator::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ItemContainerGenerator^ UnwrapItemContainerGenerator(Local<Value> value) {
     return ItemContainerGenerator::Unwrap<ItemContainerGenerator>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitItemContainerGenerator(Local<Object> exports) {
    ItemContainerGenerator::Init(exports);
  }

  class MediaTransportControlsHelper : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("MediaTransportControlsHelper").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);






        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetMethod(constructor, "getDropoutOrder", GetDropoutOrder);
        Nan::SetMethod(constructor, "setDropoutOrder", SetDropoutOrder);
        Nan::SetAccessor(constructor, Nan::New<String>("dropoutOrderProperty").ToLocalChecked(), DropoutOrderPropertyGetter);


        Nan::Set(exports, Nan::New<String>("MediaTransportControlsHelper").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      MediaTransportControlsHelper(::Windows::UI::Xaml::Controls::MediaTransportControlsHelper^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::MediaTransportControlsHelper^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControlsHelper^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::MediaTransportControlsHelper^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      MediaTransportControlsHelper *wrapperInstance = new MediaTransportControlsHelper(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControlsHelper^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::MediaTransportControlsHelper^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::MediaTransportControlsHelper^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapMediaTransportControlsHelper(winRtInstance));
    }





    static void GetDropoutOrder(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Platform::IBox<int>^ result;
          result = ::Windows::UI::Xaml::Controls::MediaTransportControlsHelper::GetDropoutOrder(arg0);
          info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Integer>(result->Value)) : Undefined());
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetDropoutOrder(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && info[1]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Platform::IBox<int>^ arg1 = ref new ::Platform::Box<int>(static_cast<int>(Nan::To<int32_t>(info[1]).FromMaybe(0)));
          
          ::Windows::UI::Xaml::Controls::MediaTransportControlsHelper::SetDropoutOrder(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void DropoutOrderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControlsHelper::DropoutOrderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    private:
      ::Windows::UI::Xaml::Controls::MediaTransportControlsHelper^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapMediaTransportControlsHelper(::Windows::UI::Xaml::Controls::MediaTransportControlsHelper^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::MediaTransportControlsHelper^ UnwrapMediaTransportControlsHelper(Local<Value> value);
  };

  Persistent<FunctionTemplate> MediaTransportControlsHelper::s_constructorTemplate;

  v8::Local<v8::Value> WrapMediaTransportControlsHelper(::Windows::UI::Xaml::Controls::MediaTransportControlsHelper^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(MediaTransportControlsHelper::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::MediaTransportControlsHelper^ UnwrapMediaTransportControlsHelper(Local<Value> value) {
     return MediaTransportControlsHelper::Unwrap<MediaTransportControlsHelper>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitMediaTransportControlsHelper(Local<Object> exports) {
    MediaTransportControlsHelper::Init(exports);
  }

  class RowDefinitionCollection : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("RowDefinitionCollection").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "getAt", GetAt);
            Nan::SetPrototypeMethod(localRef, "getView", GetView);
            Nan::SetPrototypeMethod(localRef, "indexOf", IndexOf);
            Nan::SetPrototypeMethod(localRef, "setAt", SetAt);
            Nan::SetPrototypeMethod(localRef, "insertAt", InsertAt);
            Nan::SetPrototypeMethod(localRef, "removeAt", RemoveAt);
            Nan::SetPrototypeMethod(localRef, "append", Append);
            Nan::SetPrototypeMethod(localRef, "removeAtEnd", RemoveAtEnd);
            Nan::SetPrototypeMethod(localRef, "clear", Clear);
            Nan::SetPrototypeMethod(localRef, "getMany", GetMany);
            Nan::SetPrototypeMethod(localRef, "replaceAll", ReplaceAll);
            Nan::SetPrototypeMethod(localRef, "first", First);
          




        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("RowDefinitionCollection").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      RowDefinitionCollection(::Windows::UI::Xaml::Controls::RowDefinitionCollection^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::RowDefinitionCollection^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinitionCollection^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::RowDefinitionCollection^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      RowDefinitionCollection *wrapperInstance = new RowDefinitionCollection(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinitionCollection^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::RowDefinitionCollection^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::RowDefinitionCollection^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapRowDefinitionCollection(winRtInstance));
    }


    static void GetAt(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinitionCollection^>(info.This())) {
        return;
      }

      RowDefinitionCollection *wrapper = RowDefinitionCollection::Unwrap<RowDefinitionCollection>(info.This());

      if (info.Length() == 1
        && info[0]->IsUint32())
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::RowDefinition^ result;
          result = wrapper->_instance->GetAt(arg0);
          info.GetReturnValue().Set(WrapRowDefinition(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetView(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinitionCollection^>(info.This())) {
        return;
      }

      RowDefinitionCollection *wrapper = RowDefinitionCollection::Unwrap<RowDefinitionCollection>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Controls::RowDefinition^>^ result;
          result = wrapper->_instance->GetView();
          info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Controls::RowDefinition^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Controls::RowDefinition^ val) -> Local<Value> {
              return WrapRowDefinition(val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinition^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Controls::RowDefinition^ {
              return UnwrapRowDefinition(value);
            }
          ));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void IndexOf(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinitionCollection^>(info.This())) {
        return;
      }

      RowDefinitionCollection *wrapper = RowDefinitionCollection::Unwrap<RowDefinitionCollection>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinition^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::RowDefinition^ arg0 = UnwrapRowDefinition(info[0]);
          unsigned int arg1;
          
          bool result;
          result = wrapper->_instance->IndexOf(arg0, &arg1);
          Local<Object> resObj = Nan::New<Object>();
          Nan::Set(resObj, Nan::New<String>("boolean").ToLocalChecked(), Nan::New<Boolean>(result));
          Nan::Set(resObj, Nan::New<String>("index").ToLocalChecked(), Nan::New<Integer>(arg1));
          info.GetReturnValue().Set(resObj);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void SetAt(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinitionCollection^>(info.This())) {
        return;
      }

      RowDefinitionCollection *wrapper = RowDefinitionCollection::Unwrap<RowDefinitionCollection>(info.This());

      if (info.Length() == 2
        && info[0]->IsUint32()
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinition^>(info[1]))
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          ::Windows::UI::Xaml::Controls::RowDefinition^ arg1 = UnwrapRowDefinition(info[1]);
          
          wrapper->_instance->SetAt(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void InsertAt(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinitionCollection^>(info.This())) {
        return;
      }

      RowDefinitionCollection *wrapper = RowDefinitionCollection::Unwrap<RowDefinitionCollection>(info.This());

      if (info.Length() == 2
        && info[0]->IsUint32()
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinition^>(info[1]))
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          ::Windows::UI::Xaml::Controls::RowDefinition^ arg1 = UnwrapRowDefinition(info[1]);
          
          wrapper->_instance->InsertAt(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void RemoveAt(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinitionCollection^>(info.This())) {
        return;
      }

      RowDefinitionCollection *wrapper = RowDefinitionCollection::Unwrap<RowDefinitionCollection>(info.This());

      if (info.Length() == 1
        && info[0]->IsUint32())
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          
          wrapper->_instance->RemoveAt(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Append(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinitionCollection^>(info.This())) {
        return;
      }

      RowDefinitionCollection *wrapper = RowDefinitionCollection::Unwrap<RowDefinitionCollection>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinition^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::RowDefinition^ arg0 = UnwrapRowDefinition(info[0]);
          
          wrapper->_instance->Append(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void RemoveAtEnd(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinitionCollection^>(info.This())) {
        return;
      }

      RowDefinitionCollection *wrapper = RowDefinitionCollection::Unwrap<RowDefinitionCollection>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->RemoveAtEnd();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Clear(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinitionCollection^>(info.This())) {
        return;
      }

      RowDefinitionCollection *wrapper = RowDefinitionCollection::Unwrap<RowDefinitionCollection>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->Clear();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetMany(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Not implemented")));
    }
    static void ReplaceAll(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinitionCollection^>(info.This())) {
        return;
      }

      RowDefinitionCollection *wrapper = RowDefinitionCollection::Unwrap<RowDefinitionCollection>(info.This());

      if (info.Length() == 1
        && (NodeRT::Utils::IsWinRtWrapperOf<::Platform::Array<::Windows::UI::Xaml::Controls::RowDefinition^>^>(info[0]) || info[0]->IsArray()))
      {
        try
        {
          ::Platform::Array<::Windows::UI::Xaml::Controls::RowDefinition^>^ arg0 = 
            [] (v8::Local<v8::Value> value) -> ::Platform::Array<::Windows::UI::Xaml::Controls::RowDefinition^>^
            {
              if (value->IsArray())
              {
                return NodeRT::Collections::JsArrayToWinrtArray<::Windows::UI::Xaml::Controls::RowDefinition^>(value.As<Array>(), 
                 [](Local<Value> value) -> bool {
                   return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinition^>(value);
                 },
                 [](Local<Value> value) -> ::Windows::UI::Xaml::Controls::RowDefinition^ {
                   return UnwrapRowDefinition(value);
                 }
                );
              }
              else
              {
                return dynamic_cast<::Platform::Array<::Windows::UI::Xaml::Controls::RowDefinition^>^>(NodeRT::Utils::GetObjectInstance(value));
              }
            } (info[0]);
          
          wrapper->_instance->ReplaceAll(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void First(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinitionCollection^>(info.This())) {
        return;
      }

      RowDefinitionCollection *wrapper = RowDefinitionCollection::Unwrap<RowDefinitionCollection>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          ::Windows::Foundation::Collections::IIterator<::Windows::UI::Xaml::Controls::RowDefinition^>^ result;
          result = wrapper->_instance->First();
          info.GetReturnValue().Set(NodeRT::Collections::IteratorWrapper<::Windows::UI::Xaml::Controls::RowDefinition^>::CreateIteratorWrapper(result, 
            [](::Windows::UI::Xaml::Controls::RowDefinition^ val) -> Local<Value> {
              return WrapRowDefinition(val);
            }
          ));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }





    private:
      ::Windows::UI::Xaml::Controls::RowDefinitionCollection^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapRowDefinitionCollection(::Windows::UI::Xaml::Controls::RowDefinitionCollection^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::RowDefinitionCollection^ UnwrapRowDefinitionCollection(Local<Value> value);
  };

  Persistent<FunctionTemplate> RowDefinitionCollection::s_constructorTemplate;

  v8::Local<v8::Value> WrapRowDefinitionCollection(::Windows::UI::Xaml::Controls::RowDefinitionCollection^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(RowDefinitionCollection::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::RowDefinitionCollection^ UnwrapRowDefinitionCollection(Local<Value> value) {
     return RowDefinitionCollection::Unwrap<RowDefinitionCollection>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitRowDefinitionCollection(Local<Object> exports) {
    RowDefinitionCollection::Init(exports);
  }

  class TextBoxTextChangingEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("TextBoxTextChangingEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isContentChanging").ToLocalChecked(), IsContentChangingGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("TextBoxTextChangingEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      TextBoxTextChangingEventArgs(::Windows::UI::Xaml::Controls::TextBoxTextChangingEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::TextBoxTextChangingEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBoxTextChangingEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::TextBoxTextChangingEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      TextBoxTextChangingEventArgs *wrapperInstance = new TextBoxTextChangingEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBoxTextChangingEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::TextBoxTextChangingEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::TextBoxTextChangingEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapTextBoxTextChangingEventArgs(winRtInstance));
    }





    static void IsContentChangingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBoxTextChangingEventArgs^>(info.This())) {
        return;
      }

      TextBoxTextChangingEventArgs *wrapper = TextBoxTextChangingEventArgs::Unwrap<TextBoxTextChangingEventArgs>(info.This());

      try  {
        bool result = wrapper->_instance->IsContentChanging;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::TextBoxTextChangingEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapTextBoxTextChangingEventArgs(::Windows::UI::Xaml::Controls::TextBoxTextChangingEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::TextBoxTextChangingEventArgs^ UnwrapTextBoxTextChangingEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> TextBoxTextChangingEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapTextBoxTextChangingEventArgs(::Windows::UI::Xaml::Controls::TextBoxTextChangingEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(TextBoxTextChangingEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::TextBoxTextChangingEventArgs^ UnwrapTextBoxTextChangingEventArgs(Local<Value> value) {
     return TextBoxTextChangingEventArgs::Unwrap<TextBoxTextChangingEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitTextBoxTextChangingEventArgs(Local<Object> exports) {
    TextBoxTextChangingEventArgs::Init(exports);
  }

  class TextCompositionChangedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("TextCompositionChangedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("length").ToLocalChecked(), LengthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("startIndex").ToLocalChecked(), StartIndexGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("TextCompositionChangedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      TextCompositionChangedEventArgs(::Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      TextCompositionChangedEventArgs *wrapperInstance = new TextCompositionChangedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapTextCompositionChangedEventArgs(winRtInstance));
    }





    static void LengthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs^>(info.This())) {
        return;
      }

      TextCompositionChangedEventArgs *wrapper = TextCompositionChangedEventArgs::Unwrap<TextCompositionChangedEventArgs>(info.This());

      try  {
        int result = wrapper->_instance->Length;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StartIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs^>(info.This())) {
        return;
      }

      TextCompositionChangedEventArgs *wrapper = TextCompositionChangedEventArgs::Unwrap<TextCompositionChangedEventArgs>(info.This());

      try  {
        int result = wrapper->_instance->StartIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapTextCompositionChangedEventArgs(::Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs^ UnwrapTextCompositionChangedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> TextCompositionChangedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapTextCompositionChangedEventArgs(::Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(TextCompositionChangedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs^ UnwrapTextCompositionChangedEventArgs(Local<Value> value) {
     return TextCompositionChangedEventArgs::Unwrap<TextCompositionChangedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitTextCompositionChangedEventArgs(Local<Object> exports) {
    TextCompositionChangedEventArgs::Init(exports);
  }

  class TextCompositionEndedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("TextCompositionEndedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("length").ToLocalChecked(), LengthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("startIndex").ToLocalChecked(), StartIndexGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("TextCompositionEndedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      TextCompositionEndedEventArgs(::Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      TextCompositionEndedEventArgs *wrapperInstance = new TextCompositionEndedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapTextCompositionEndedEventArgs(winRtInstance));
    }





    static void LengthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs^>(info.This())) {
        return;
      }

      TextCompositionEndedEventArgs *wrapper = TextCompositionEndedEventArgs::Unwrap<TextCompositionEndedEventArgs>(info.This());

      try  {
        int result = wrapper->_instance->Length;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StartIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs^>(info.This())) {
        return;
      }

      TextCompositionEndedEventArgs *wrapper = TextCompositionEndedEventArgs::Unwrap<TextCompositionEndedEventArgs>(info.This());

      try  {
        int result = wrapper->_instance->StartIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapTextCompositionEndedEventArgs(::Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs^ UnwrapTextCompositionEndedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> TextCompositionEndedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapTextCompositionEndedEventArgs(::Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(TextCompositionEndedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs^ UnwrapTextCompositionEndedEventArgs(Local<Value> value) {
     return TextCompositionEndedEventArgs::Unwrap<TextCompositionEndedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitTextCompositionEndedEventArgs(Local<Object> exports) {
    TextCompositionEndedEventArgs::Init(exports);
  }

  class TextCompositionStartedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("TextCompositionStartedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("length").ToLocalChecked(), LengthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("startIndex").ToLocalChecked(), StartIndexGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("TextCompositionStartedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      TextCompositionStartedEventArgs(::Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      TextCompositionStartedEventArgs *wrapperInstance = new TextCompositionStartedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapTextCompositionStartedEventArgs(winRtInstance));
    }





    static void LengthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs^>(info.This())) {
        return;
      }

      TextCompositionStartedEventArgs *wrapper = TextCompositionStartedEventArgs::Unwrap<TextCompositionStartedEventArgs>(info.This());

      try  {
        int result = wrapper->_instance->Length;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StartIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs^>(info.This())) {
        return;
      }

      TextCompositionStartedEventArgs *wrapper = TextCompositionStartedEventArgs::Unwrap<TextCompositionStartedEventArgs>(info.This());

      try  {
        int result = wrapper->_instance->StartIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapTextCompositionStartedEventArgs(::Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs^ UnwrapTextCompositionStartedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> TextCompositionStartedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapTextCompositionStartedEventArgs(::Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(TextCompositionStartedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs^ UnwrapTextCompositionStartedEventArgs(Local<Value> value) {
     return TextCompositionStartedEventArgs::Unwrap<TextCompositionStartedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitTextCompositionStartedEventArgs(Local<Object> exports) {
    TextCompositionStartedEventArgs::Init(exports);
  }

  class ToolTipService : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ToolTipService").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);






        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetMethod(constructor, "getPlacement", GetPlacement);
        Nan::SetMethod(constructor, "setPlacement", SetPlacement);
        Nan::SetMethod(constructor, "getPlacementTarget", GetPlacementTarget);
        Nan::SetMethod(constructor, "setPlacementTarget", SetPlacementTarget);
        Nan::SetMethod(constructor, "getToolTip", GetToolTip);
        Nan::SetMethod(constructor, "setToolTip", SetToolTip);
        Nan::SetAccessor(constructor, Nan::New<String>("placementProperty").ToLocalChecked(), PlacementPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("placementTargetProperty").ToLocalChecked(), PlacementTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("toolTipProperty").ToLocalChecked(), ToolTipPropertyGetter);


        Nan::Set(exports, Nan::New<String>("ToolTipService").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ToolTipService(::Windows::UI::Xaml::Controls::ToolTipService^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ToolTipService^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTipService^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ToolTipService^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ToolTipService *wrapperInstance = new ToolTipService(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTipService^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ToolTipService^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ToolTipService^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapToolTipService(winRtInstance));
    }





    static void GetPlacement(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Windows::UI::Xaml::Controls::Primitives::PlacementMode result;
          result = ::Windows::UI::Xaml::Controls::ToolTipService::GetPlacement(arg0);
          info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetPlacement(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0])
        && info[1]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::UI::Xaml::Controls::Primitives::PlacementMode arg1 = static_cast<::Windows::UI::Xaml::Controls::Primitives::PlacementMode>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::ToolTipService::SetPlacement(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetPlacementTarget(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Windows::UI::Xaml::UIElement^ result;
          result = ::Windows::UI::Xaml::Controls::ToolTipService::GetPlacementTarget(arg0);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetPlacementTarget(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::UI::Xaml::UIElement^ arg1 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          ::Windows::UI::Xaml::Controls::ToolTipService::SetPlacementTarget(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetToolTip(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Platform::Object^ result;
          result = ::Windows::UI::Xaml::Controls::ToolTipService::GetToolTip(arg0);
          info.GetReturnValue().Set(CreateOpaqueWrapper(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetToolTip(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          ::Windows::UI::Xaml::Controls::ToolTipService::SetToolTip(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void PlacementPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ToolTipService::PlacementProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PlacementTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ToolTipService::PlacementTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ToolTipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ToolTipService::ToolTipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    private:
      ::Windows::UI::Xaml::Controls::ToolTipService^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapToolTipService(::Windows::UI::Xaml::Controls::ToolTipService^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ToolTipService^ UnwrapToolTipService(Local<Value> value);
  };

  Persistent<FunctionTemplate> ToolTipService::s_constructorTemplate;

  v8::Local<v8::Value> WrapToolTipService(::Windows::UI::Xaml::Controls::ToolTipService^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ToolTipService::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ToolTipService^ UnwrapToolTipService(Local<Value> value) {
     return ToolTipService::Unwrap<ToolTipService>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitToolTipService(Local<Object> exports) {
    ToolTipService::Init(exports);
  }

  class UIElementCollection : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("UIElementCollection").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "getAt", GetAt);
            Nan::SetPrototypeMethod(localRef, "getView", GetView);
            Nan::SetPrototypeMethod(localRef, "indexOf", IndexOf);
            Nan::SetPrototypeMethod(localRef, "setAt", SetAt);
            Nan::SetPrototypeMethod(localRef, "insertAt", InsertAt);
            Nan::SetPrototypeMethod(localRef, "removeAt", RemoveAt);
            Nan::SetPrototypeMethod(localRef, "append", Append);
            Nan::SetPrototypeMethod(localRef, "removeAtEnd", RemoveAtEnd);
            Nan::SetPrototypeMethod(localRef, "clear", Clear);
            Nan::SetPrototypeMethod(localRef, "getMany", GetMany);
            Nan::SetPrototypeMethod(localRef, "replaceAll", ReplaceAll);
            Nan::SetPrototypeMethod(localRef, "first", First);
            Nan::SetPrototypeMethod(localRef, "move", Move);
          




        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("UIElementCollection").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      UIElementCollection(::Windows::UI::Xaml::Controls::UIElementCollection^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::UIElementCollection^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UIElementCollection^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::UIElementCollection^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      UIElementCollection *wrapperInstance = new UIElementCollection(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UIElementCollection^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::UIElementCollection^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::UIElementCollection^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapUIElementCollection(winRtInstance));
    }


    static void GetAt(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UIElementCollection^>(info.This())) {
        return;
      }

      UIElementCollection *wrapper = UIElementCollection::Unwrap<UIElementCollection>(info.This());

      if (info.Length() == 1
        && info[0]->IsUint32())
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          
          ::Windows::UI::Xaml::UIElement^ result;
          result = wrapper->_instance->GetAt(arg0);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetView(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UIElementCollection^>(info.This())) {
        return;
      }

      UIElementCollection *wrapper = UIElementCollection::Unwrap<UIElementCollection>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::UIElement^>^ result;
          result = wrapper->_instance->GetView();
          info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::UIElement^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::UIElement^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::UIElement^ {
              return dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void IndexOf(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UIElementCollection^>(info.This())) {
        return;
      }

      UIElementCollection *wrapper = UIElementCollection::Unwrap<UIElementCollection>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          unsigned int arg1;
          
          bool result;
          result = wrapper->_instance->IndexOf(arg0, &arg1);
          Local<Object> resObj = Nan::New<Object>();
          Nan::Set(resObj, Nan::New<String>("boolean").ToLocalChecked(), Nan::New<Boolean>(result));
          Nan::Set(resObj, Nan::New<String>("index").ToLocalChecked(), Nan::New<Integer>(arg1));
          info.GetReturnValue().Set(resObj);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void SetAt(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UIElementCollection^>(info.This())) {
        return;
      }

      UIElementCollection *wrapper = UIElementCollection::Unwrap<UIElementCollection>(info.This());

      if (info.Length() == 2
        && info[0]->IsUint32()
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[1]))
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          ::Windows::UI::Xaml::UIElement^ arg1 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          wrapper->_instance->SetAt(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void InsertAt(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UIElementCollection^>(info.This())) {
        return;
      }

      UIElementCollection *wrapper = UIElementCollection::Unwrap<UIElementCollection>(info.This());

      if (info.Length() == 2
        && info[0]->IsUint32()
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[1]))
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          ::Windows::UI::Xaml::UIElement^ arg1 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          wrapper->_instance->InsertAt(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void RemoveAt(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UIElementCollection^>(info.This())) {
        return;
      }

      UIElementCollection *wrapper = UIElementCollection::Unwrap<UIElementCollection>(info.This());

      if (info.Length() == 1
        && info[0]->IsUint32())
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          
          wrapper->_instance->RemoveAt(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Append(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UIElementCollection^>(info.This())) {
        return;
      }

      UIElementCollection *wrapper = UIElementCollection::Unwrap<UIElementCollection>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->Append(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void RemoveAtEnd(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UIElementCollection^>(info.This())) {
        return;
      }

      UIElementCollection *wrapper = UIElementCollection::Unwrap<UIElementCollection>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->RemoveAtEnd();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Clear(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UIElementCollection^>(info.This())) {
        return;
      }

      UIElementCollection *wrapper = UIElementCollection::Unwrap<UIElementCollection>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->Clear();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetMany(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Not implemented")));
    }
    static void ReplaceAll(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UIElementCollection^>(info.This())) {
        return;
      }

      UIElementCollection *wrapper = UIElementCollection::Unwrap<UIElementCollection>(info.This());

      if (info.Length() == 1
        && (NodeRT::Utils::IsWinRtWrapperOf<::Platform::Array<::Windows::UI::Xaml::UIElement^>^>(info[0]) || info[0]->IsArray()))
      {
        try
        {
          ::Platform::Array<::Windows::UI::Xaml::UIElement^>^ arg0 = 
            [] (v8::Local<v8::Value> value) -> ::Platform::Array<::Windows::UI::Xaml::UIElement^>^
            {
              if (value->IsArray())
              {
                return NodeRT::Collections::JsArrayToWinrtArray<::Windows::UI::Xaml::UIElement^>(value.As<Array>(), 
                 [](Local<Value> value) -> bool {
                   return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(value);
                 },
                 [](Local<Value> value) -> ::Windows::UI::Xaml::UIElement^ {
                   return dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(value));
                 }
                );
              }
              else
              {
                return dynamic_cast<::Platform::Array<::Windows::UI::Xaml::UIElement^>^>(NodeRT::Utils::GetObjectInstance(value));
              }
            } (info[0]);
          
          wrapper->_instance->ReplaceAll(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void First(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UIElementCollection^>(info.This())) {
        return;
      }

      UIElementCollection *wrapper = UIElementCollection::Unwrap<UIElementCollection>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          ::Windows::Foundation::Collections::IIterator<::Windows::UI::Xaml::UIElement^>^ result;
          result = wrapper->_instance->First();
          info.GetReturnValue().Set(NodeRT::Collections::IteratorWrapper<::Windows::UI::Xaml::UIElement^>::CreateIteratorWrapper(result, 
            [](::Windows::UI::Xaml::UIElement^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", val);
            }
          ));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Move(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UIElementCollection^>(info.This())) {
        return;
      }

      UIElementCollection *wrapper = UIElementCollection::Unwrap<UIElementCollection>(info.This());

      if (info.Length() == 2
        && info[0]->IsUint32()
        && info[1]->IsUint32())
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          unsigned int arg1 = static_cast<unsigned int>(Nan::To<uint32_t>(info[1]).FromMaybe(0));
          
          wrapper->_instance->Move(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }





    private:
      ::Windows::UI::Xaml::Controls::UIElementCollection^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapUIElementCollection(::Windows::UI::Xaml::Controls::UIElementCollection^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::UIElementCollection^ UnwrapUIElementCollection(Local<Value> value);
  };

  Persistent<FunctionTemplate> UIElementCollection::s_constructorTemplate;

  v8::Local<v8::Value> WrapUIElementCollection(::Windows::UI::Xaml::Controls::UIElementCollection^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(UIElementCollection::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::UIElementCollection^ UnwrapUIElementCollection(Local<Value> value) {
     return UIElementCollection::Unwrap<UIElementCollection>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitUIElementCollection(Local<Object> exports) {
    UIElementCollection::Init(exports);
  }

  class CalendarViewDayItemChangingEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("CalendarViewDayItemChangingEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "registerUpdateCallback", RegisterUpdateCallback);
          



          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("inRecycleQueue").ToLocalChecked(), InRecycleQueueGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("item").ToLocalChecked(), ItemGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("phase").ToLocalChecked(), PhaseGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("CalendarViewDayItemChangingEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      CalendarViewDayItemChangingEventArgs(::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      CalendarViewDayItemChangingEventArgs *wrapperInstance = new CalendarViewDayItemChangingEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapCalendarViewDayItemChangingEventArgs(winRtInstance));
    }


    static void RegisterUpdateCallback(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^>(info.This())) {
        return;
      }

      CalendarViewDayItemChangingEventArgs *wrapper = CalendarViewDayItemChangingEventArgs::Unwrap<CalendarViewDayItemChangingEventArgs>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::CalendarView^, ::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^>^>(info[0]))
      {
        try
        {
          ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::CalendarView^, ::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^>^ arg0 = dynamic_cast<::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::CalendarView^, ::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^>^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->RegisterUpdateCallback(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 2
        && info[0]->IsUint32()
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::CalendarView^, ::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^>^>(info[1]))
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::CalendarView^, ::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^>^ arg1 = dynamic_cast<::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::CalendarView^, ::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^>^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          wrapper->_instance->RegisterUpdateCallback(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void InRecycleQueueGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^>(info.This())) {
        return;
      }

      CalendarViewDayItemChangingEventArgs *wrapper = CalendarViewDayItemChangingEventArgs::Unwrap<CalendarViewDayItemChangingEventArgs>(info.This());

      try  {
        bool result = wrapper->_instance->InRecycleQueue;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^>(info.This())) {
        return;
      }

      CalendarViewDayItemChangingEventArgs *wrapper = CalendarViewDayItemChangingEventArgs::Unwrap<CalendarViewDayItemChangingEventArgs>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::CalendarViewDayItem^ result = wrapper->_instance->Item;
        info.GetReturnValue().Set(WrapCalendarViewDayItem(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PhaseGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^>(info.This())) {
        return;
      }

      CalendarViewDayItemChangingEventArgs *wrapper = CalendarViewDayItemChangingEventArgs::Unwrap<CalendarViewDayItemChangingEventArgs>(info.This());

      try  {
        unsigned int result = wrapper->_instance->Phase;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapCalendarViewDayItemChangingEventArgs(::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^ UnwrapCalendarViewDayItemChangingEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> CalendarViewDayItemChangingEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapCalendarViewDayItemChangingEventArgs(::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(CalendarViewDayItemChangingEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^ UnwrapCalendarViewDayItemChangingEventArgs(Local<Value> value) {
     return CalendarViewDayItemChangingEventArgs::Unwrap<CalendarViewDayItemChangingEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitCalendarViewDayItemChangingEventArgs(Local<Object> exports) {
    CalendarViewDayItemChangingEventArgs::Init(exports);
  }

  class HubSectionHeaderClickEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("HubSectionHeaderClickEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("section").ToLocalChecked(), SectionGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("HubSectionHeaderClickEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      HubSectionHeaderClickEventArgs(::Windows::UI::Xaml::Controls::HubSectionHeaderClickEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::HubSectionHeaderClickEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSectionHeaderClickEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::HubSectionHeaderClickEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::HubSectionHeaderClickEventArgs();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      HubSectionHeaderClickEventArgs *wrapperInstance = new HubSectionHeaderClickEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSectionHeaderClickEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::HubSectionHeaderClickEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::HubSectionHeaderClickEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapHubSectionHeaderClickEventArgs(winRtInstance));
    }





    static void SectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSectionHeaderClickEventArgs^>(info.This())) {
        return;
      }

      HubSectionHeaderClickEventArgs *wrapper = HubSectionHeaderClickEventArgs::Unwrap<HubSectionHeaderClickEventArgs>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::HubSection^ result = wrapper->_instance->Section;
        info.GetReturnValue().Set(WrapHubSection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::HubSectionHeaderClickEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapHubSectionHeaderClickEventArgs(::Windows::UI::Xaml::Controls::HubSectionHeaderClickEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::HubSectionHeaderClickEventArgs^ UnwrapHubSectionHeaderClickEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> HubSectionHeaderClickEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapHubSectionHeaderClickEventArgs(::Windows::UI::Xaml::Controls::HubSectionHeaderClickEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(HubSectionHeaderClickEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::HubSectionHeaderClickEventArgs^ UnwrapHubSectionHeaderClickEventArgs(Local<Value> value) {
     return HubSectionHeaderClickEventArgs::Unwrap<HubSectionHeaderClickEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitHubSectionHeaderClickEventArgs(Local<Object> exports) {
    HubSectionHeaderClickEventArgs::Init(exports);
  }

  class SectionsInViewChangedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("SectionsInViewChangedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("addedSections").ToLocalChecked(), AddedSectionsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("removedSections").ToLocalChecked(), RemovedSectionsGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("SectionsInViewChangedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      SectionsInViewChangedEventArgs(::Windows::UI::Xaml::Controls::SectionsInViewChangedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::SectionsInViewChangedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SectionsInViewChangedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::SectionsInViewChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      SectionsInViewChangedEventArgs *wrapperInstance = new SectionsInViewChangedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SectionsInViewChangedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::SectionsInViewChangedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::SectionsInViewChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapSectionsInViewChangedEventArgs(winRtInstance));
    }





    static void AddedSectionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SectionsInViewChangedEventArgs^>(info.This())) {
        return;
      }

      SectionsInViewChangedEventArgs *wrapper = SectionsInViewChangedEventArgs::Unwrap<SectionsInViewChangedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Controls::HubSection^>^ result = wrapper->_instance->AddedSections;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Controls::HubSection^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Controls::HubSection^ val) -> Local<Value> {
              return WrapHubSection(val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Controls::HubSection^ {
              return UnwrapHubSection(value);
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RemovedSectionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SectionsInViewChangedEventArgs^>(info.This())) {
        return;
      }

      SectionsInViewChangedEventArgs *wrapper = SectionsInViewChangedEventArgs::Unwrap<SectionsInViewChangedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Controls::HubSection^>^ result = wrapper->_instance->RemovedSections;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Controls::HubSection^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Controls::HubSection^ val) -> Local<Value> {
              return WrapHubSection(val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Controls::HubSection^ {
              return UnwrapHubSection(value);
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::SectionsInViewChangedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapSectionsInViewChangedEventArgs(::Windows::UI::Xaml::Controls::SectionsInViewChangedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::SectionsInViewChangedEventArgs^ UnwrapSectionsInViewChangedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> SectionsInViewChangedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapSectionsInViewChangedEventArgs(::Windows::UI::Xaml::Controls::SectionsInViewChangedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(SectionsInViewChangedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::SectionsInViewChangedEventArgs^ UnwrapSectionsInViewChangedEventArgs(Local<Value> value) {
     return SectionsInViewChangedEventArgs::Unwrap<SectionsInViewChangedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitSectionsInViewChangedEventArgs(Local<Object> exports) {
    SectionsInViewChangedEventArgs::Init(exports);
  }

  class WebViewNavigationFailedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("WebViewNavigationFailedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("uri").ToLocalChecked(), UriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("webErrorStatus").ToLocalChecked(), WebErrorStatusGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("WebViewNavigationFailedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      WebViewNavigationFailedEventArgs(::Windows::UI::Xaml::Controls::WebViewNavigationFailedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::WebViewNavigationFailedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewNavigationFailedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::WebViewNavigationFailedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      WebViewNavigationFailedEventArgs *wrapperInstance = new WebViewNavigationFailedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewNavigationFailedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::WebViewNavigationFailedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::WebViewNavigationFailedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapWebViewNavigationFailedEventArgs(winRtInstance));
    }





    static void UriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewNavigationFailedEventArgs^>(info.This())) {
        return;
      }

      WebViewNavigationFailedEventArgs *wrapper = WebViewNavigationFailedEventArgs::Unwrap<WebViewNavigationFailedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->Uri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WebErrorStatusGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewNavigationFailedEventArgs^>(info.This())) {
        return;
      }

      WebViewNavigationFailedEventArgs *wrapper = WebViewNavigationFailedEventArgs::Unwrap<WebViewNavigationFailedEventArgs>(info.This());

      try  {
        ::Windows::Web::WebErrorStatus result = wrapper->_instance->WebErrorStatus;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::WebViewNavigationFailedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapWebViewNavigationFailedEventArgs(::Windows::UI::Xaml::Controls::WebViewNavigationFailedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::WebViewNavigationFailedEventArgs^ UnwrapWebViewNavigationFailedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> WebViewNavigationFailedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapWebViewNavigationFailedEventArgs(::Windows::UI::Xaml::Controls::WebViewNavigationFailedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(WebViewNavigationFailedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::WebViewNavigationFailedEventArgs^ UnwrapWebViewNavigationFailedEventArgs(Local<Value> value) {
     return WebViewNavigationFailedEventArgs::Unwrap<WebViewNavigationFailedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitWebViewNavigationFailedEventArgs(Local<Object> exports) {
    WebViewNavigationFailedEventArgs::Init(exports);
  }

  class ICommandBarElement : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ICommandBarElement").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isCompact").ToLocalChecked(), IsCompactGetter, IsCompactSetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("ICommandBarElement").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ICommandBarElement(::Windows::UI::Xaml::Controls::ICommandBarElement^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ICommandBarElement^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ICommandBarElement^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ICommandBarElement^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ICommandBarElement *wrapperInstance = new ICommandBarElement(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ICommandBarElement^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ICommandBarElement^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ICommandBarElement^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapICommandBarElement(winRtInstance));
    }





    static void IsCompactGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ICommandBarElement^>(info.This())) {
        return;
      }

      ICommandBarElement *wrapper = ICommandBarElement::Unwrap<ICommandBarElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsCompact;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCompactSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ICommandBarElement^>(info.This())) {
        return;
      }

      ICommandBarElement *wrapper = ICommandBarElement::Unwrap<ICommandBarElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsCompact = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::ICommandBarElement^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapICommandBarElement(::Windows::UI::Xaml::Controls::ICommandBarElement^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ICommandBarElement^ UnwrapICommandBarElement(Local<Value> value);
  };

  Persistent<FunctionTemplate> ICommandBarElement::s_constructorTemplate;

  v8::Local<v8::Value> WrapICommandBarElement(::Windows::UI::Xaml::Controls::ICommandBarElement^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ICommandBarElement::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ICommandBarElement^ UnwrapICommandBarElement(Local<Value> value) {
     return ICommandBarElement::Unwrap<ICommandBarElement>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitICommandBarElement(Local<Object> exports) {
    ICommandBarElement::Init(exports);
  }

  class ICommandBarElement2 : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ICommandBarElement2").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dynamicOverflowOrder").ToLocalChecked(), DynamicOverflowOrderGetter, DynamicOverflowOrderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isInOverflow").ToLocalChecked(), IsInOverflowGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("ICommandBarElement2").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ICommandBarElement2(::Windows::UI::Xaml::Controls::ICommandBarElement2^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ICommandBarElement2^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ICommandBarElement2^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ICommandBarElement2^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ICommandBarElement2 *wrapperInstance = new ICommandBarElement2(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ICommandBarElement2^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ICommandBarElement2^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ICommandBarElement2^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapICommandBarElement2(winRtInstance));
    }





    static void DynamicOverflowOrderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ICommandBarElement2^>(info.This())) {
        return;
      }

      ICommandBarElement2 *wrapper = ICommandBarElement2::Unwrap<ICommandBarElement2>(info.This());

      try  {
        int result = wrapper->_instance->DynamicOverflowOrder;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DynamicOverflowOrderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ICommandBarElement2^>(info.This())) {
        return;
      }

      ICommandBarElement2 *wrapper = ICommandBarElement2::Unwrap<ICommandBarElement2>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->DynamicOverflowOrder = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsInOverflowGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ICommandBarElement2^>(info.This())) {
        return;
      }

      ICommandBarElement2 *wrapper = ICommandBarElement2::Unwrap<ICommandBarElement2>(info.This());

      try  {
        bool result = wrapper->_instance->IsInOverflow;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::ICommandBarElement2^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapICommandBarElement2(::Windows::UI::Xaml::Controls::ICommandBarElement2^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ICommandBarElement2^ UnwrapICommandBarElement2(Local<Value> value);
  };

  Persistent<FunctionTemplate> ICommandBarElement2::s_constructorTemplate;

  v8::Local<v8::Value> WrapICommandBarElement2(::Windows::UI::Xaml::Controls::ICommandBarElement2^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ICommandBarElement2::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ICommandBarElement2^ UnwrapICommandBarElement2(Local<Value> value) {
     return ICommandBarElement2::Unwrap<ICommandBarElement2>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitICommandBarElement2(Local<Object> exports) {
    ICommandBarElement2::Init(exports);
  }

  class CalendarDatePickerDateChangedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("CalendarDatePickerDateChangedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("newDate").ToLocalChecked(), NewDateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("oldDate").ToLocalChecked(), OldDateGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("CalendarDatePickerDateChangedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      CalendarDatePickerDateChangedEventArgs(::Windows::UI::Xaml::Controls::CalendarDatePickerDateChangedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::CalendarDatePickerDateChangedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePickerDateChangedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::CalendarDatePickerDateChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      CalendarDatePickerDateChangedEventArgs *wrapperInstance = new CalendarDatePickerDateChangedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePickerDateChangedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::CalendarDatePickerDateChangedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::CalendarDatePickerDateChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapCalendarDatePickerDateChangedEventArgs(winRtInstance));
    }





    static void NewDateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePickerDateChangedEventArgs^>(info.This())) {
        return;
      }

      CalendarDatePickerDateChangedEventArgs *wrapper = CalendarDatePickerDateChangedEventArgs::Unwrap<CalendarDatePickerDateChangedEventArgs>(info.This());

      try  {
        ::Platform::IBox<::Windows::Foundation::DateTime>^ result = wrapper->_instance->NewDate;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(NodeRT::Utils::DateTimeToJS(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OldDateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePickerDateChangedEventArgs^>(info.This())) {
        return;
      }

      CalendarDatePickerDateChangedEventArgs *wrapper = CalendarDatePickerDateChangedEventArgs::Unwrap<CalendarDatePickerDateChangedEventArgs>(info.This());

      try  {
        ::Platform::IBox<::Windows::Foundation::DateTime>^ result = wrapper->_instance->OldDate;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(NodeRT::Utils::DateTimeToJS(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::CalendarDatePickerDateChangedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapCalendarDatePickerDateChangedEventArgs(::Windows::UI::Xaml::Controls::CalendarDatePickerDateChangedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::CalendarDatePickerDateChangedEventArgs^ UnwrapCalendarDatePickerDateChangedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> CalendarDatePickerDateChangedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapCalendarDatePickerDateChangedEventArgs(::Windows::UI::Xaml::Controls::CalendarDatePickerDateChangedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(CalendarDatePickerDateChangedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::CalendarDatePickerDateChangedEventArgs^ UnwrapCalendarDatePickerDateChangedEventArgs(Local<Value> value) {
     return CalendarDatePickerDateChangedEventArgs::Unwrap<CalendarDatePickerDateChangedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitCalendarDatePickerDateChangedEventArgs(Local<Object> exports) {
    CalendarDatePickerDateChangedEventArgs::Init(exports);
  }

  class CalendarViewSelectedDatesChangedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("CalendarViewSelectedDatesChangedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("addedDates").ToLocalChecked(), AddedDatesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("removedDates").ToLocalChecked(), RemovedDatesGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("CalendarViewSelectedDatesChangedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      CalendarViewSelectedDatesChangedEventArgs(::Windows::UI::Xaml::Controls::CalendarViewSelectedDatesChangedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::CalendarViewSelectedDatesChangedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewSelectedDatesChangedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::CalendarViewSelectedDatesChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      CalendarViewSelectedDatesChangedEventArgs *wrapperInstance = new CalendarViewSelectedDatesChangedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewSelectedDatesChangedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::CalendarViewSelectedDatesChangedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::CalendarViewSelectedDatesChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapCalendarViewSelectedDatesChangedEventArgs(winRtInstance));
    }





    static void AddedDatesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewSelectedDatesChangedEventArgs^>(info.This())) {
        return;
      }

      CalendarViewSelectedDatesChangedEventArgs *wrapper = CalendarViewSelectedDatesChangedEventArgs::Unwrap<CalendarViewSelectedDatesChangedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::Foundation::DateTime>^ result = wrapper->_instance->AddedDates;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::Foundation::DateTime>::CreateVectorViewWrapper(result, 
            [](::Windows::Foundation::DateTime val) -> Local<Value> {
              return NodeRT::Utils::DateTimeToJS(val);
            },
            [](Local<Value> value) -> bool {
              return value->IsDate();
            },
            [](Local<Value> value) -> ::Windows::Foundation::DateTime {
              return NodeRT::Utils::DateTimeFromJSDate(value);
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RemovedDatesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewSelectedDatesChangedEventArgs^>(info.This())) {
        return;
      }

      CalendarViewSelectedDatesChangedEventArgs *wrapper = CalendarViewSelectedDatesChangedEventArgs::Unwrap<CalendarViewSelectedDatesChangedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::Foundation::DateTime>^ result = wrapper->_instance->RemovedDates;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::Foundation::DateTime>::CreateVectorViewWrapper(result, 
            [](::Windows::Foundation::DateTime val) -> Local<Value> {
              return NodeRT::Utils::DateTimeToJS(val);
            },
            [](Local<Value> value) -> bool {
              return value->IsDate();
            },
            [](Local<Value> value) -> ::Windows::Foundation::DateTime {
              return NodeRT::Utils::DateTimeFromJSDate(value);
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::CalendarViewSelectedDatesChangedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapCalendarViewSelectedDatesChangedEventArgs(::Windows::UI::Xaml::Controls::CalendarViewSelectedDatesChangedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::CalendarViewSelectedDatesChangedEventArgs^ UnwrapCalendarViewSelectedDatesChangedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> CalendarViewSelectedDatesChangedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapCalendarViewSelectedDatesChangedEventArgs(::Windows::UI::Xaml::Controls::CalendarViewSelectedDatesChangedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(CalendarViewSelectedDatesChangedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::CalendarViewSelectedDatesChangedEventArgs^ UnwrapCalendarViewSelectedDatesChangedEventArgs(Local<Value> value) {
     return CalendarViewSelectedDatesChangedEventArgs::Unwrap<CalendarViewSelectedDatesChangedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitCalendarViewSelectedDatesChangedEventArgs(Local<Object> exports) {
    CalendarViewSelectedDatesChangedEventArgs::Init(exports);
  }

  class ContentDialogButtonClickDeferral : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ContentDialogButtonClickDeferral").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "complete", Complete);
          




        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("ContentDialogButtonClickDeferral").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ContentDialogButtonClickDeferral(::Windows::UI::Xaml::Controls::ContentDialogButtonClickDeferral^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ContentDialogButtonClickDeferral^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialogButtonClickDeferral^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ContentDialogButtonClickDeferral^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ContentDialogButtonClickDeferral *wrapperInstance = new ContentDialogButtonClickDeferral(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialogButtonClickDeferral^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ContentDialogButtonClickDeferral^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ContentDialogButtonClickDeferral^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapContentDialogButtonClickDeferral(winRtInstance));
    }


    static void Complete(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialogButtonClickDeferral^>(info.This())) {
        return;
      }

      ContentDialogButtonClickDeferral *wrapper = ContentDialogButtonClickDeferral::Unwrap<ContentDialogButtonClickDeferral>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->Complete();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }





    private:
      ::Windows::UI::Xaml::Controls::ContentDialogButtonClickDeferral^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapContentDialogButtonClickDeferral(::Windows::UI::Xaml::Controls::ContentDialogButtonClickDeferral^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ContentDialogButtonClickDeferral^ UnwrapContentDialogButtonClickDeferral(Local<Value> value);
  };

  Persistent<FunctionTemplate> ContentDialogButtonClickDeferral::s_constructorTemplate;

  v8::Local<v8::Value> WrapContentDialogButtonClickDeferral(::Windows::UI::Xaml::Controls::ContentDialogButtonClickDeferral^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ContentDialogButtonClickDeferral::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ContentDialogButtonClickDeferral^ UnwrapContentDialogButtonClickDeferral(Local<Value> value) {
     return ContentDialogButtonClickDeferral::Unwrap<ContentDialogButtonClickDeferral>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitContentDialogButtonClickDeferral(Local<Object> exports) {
    ContentDialogButtonClickDeferral::Init(exports);
  }

  class ContentDialogButtonClickEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ContentDialogButtonClickEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "getDeferral", GetDeferral);
          



          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cancel").ToLocalChecked(), CancelGetter, CancelSetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("ContentDialogButtonClickEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ContentDialogButtonClickEventArgs(::Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ContentDialogButtonClickEventArgs *wrapperInstance = new ContentDialogButtonClickEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapContentDialogButtonClickEventArgs(winRtInstance));
    }


    static void GetDeferral(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs^>(info.This())) {
        return;
      }

      ContentDialogButtonClickEventArgs *wrapper = ContentDialogButtonClickEventArgs::Unwrap<ContentDialogButtonClickEventArgs>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          ::Windows::UI::Xaml::Controls::ContentDialogButtonClickDeferral^ result;
          result = wrapper->_instance->GetDeferral();
          info.GetReturnValue().Set(WrapContentDialogButtonClickDeferral(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void CancelGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs^>(info.This())) {
        return;
      }

      ContentDialogButtonClickEventArgs *wrapper = ContentDialogButtonClickEventArgs::Unwrap<ContentDialogButtonClickEventArgs>(info.This());

      try  {
        bool result = wrapper->_instance->Cancel;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CancelSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs^>(info.This())) {
        return;
      }

      ContentDialogButtonClickEventArgs *wrapper = ContentDialogButtonClickEventArgs::Unwrap<ContentDialogButtonClickEventArgs>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->Cancel = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapContentDialogButtonClickEventArgs(::Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs^ UnwrapContentDialogButtonClickEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> ContentDialogButtonClickEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapContentDialogButtonClickEventArgs(::Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ContentDialogButtonClickEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs^ UnwrapContentDialogButtonClickEventArgs(Local<Value> value) {
     return ContentDialogButtonClickEventArgs::Unwrap<ContentDialogButtonClickEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitContentDialogButtonClickEventArgs(Local<Object> exports) {
    ContentDialogButtonClickEventArgs::Init(exports);
  }

  class ContentDialogClosedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ContentDialogClosedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("result").ToLocalChecked(), ResultGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("ContentDialogClosedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ContentDialogClosedEventArgs(::Windows::UI::Xaml::Controls::ContentDialogClosedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ContentDialogClosedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialogClosedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ContentDialogClosedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ContentDialogClosedEventArgs *wrapperInstance = new ContentDialogClosedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialogClosedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ContentDialogClosedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ContentDialogClosedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapContentDialogClosedEventArgs(winRtInstance));
    }





    static void ResultGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialogClosedEventArgs^>(info.This())) {
        return;
      }

      ContentDialogClosedEventArgs *wrapper = ContentDialogClosedEventArgs::Unwrap<ContentDialogClosedEventArgs>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ContentDialogResult result = wrapper->_instance->Result;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::ContentDialogClosedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapContentDialogClosedEventArgs(::Windows::UI::Xaml::Controls::ContentDialogClosedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ContentDialogClosedEventArgs^ UnwrapContentDialogClosedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> ContentDialogClosedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapContentDialogClosedEventArgs(::Windows::UI::Xaml::Controls::ContentDialogClosedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ContentDialogClosedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ContentDialogClosedEventArgs^ UnwrapContentDialogClosedEventArgs(Local<Value> value) {
     return ContentDialogClosedEventArgs::Unwrap<ContentDialogClosedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitContentDialogClosedEventArgs(Local<Object> exports) {
    ContentDialogClosedEventArgs::Init(exports);
  }

  class ContentDialogClosingDeferral : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ContentDialogClosingDeferral").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "complete", Complete);
          




        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("ContentDialogClosingDeferral").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ContentDialogClosingDeferral(::Windows::UI::Xaml::Controls::ContentDialogClosingDeferral^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ContentDialogClosingDeferral^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialogClosingDeferral^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ContentDialogClosingDeferral^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ContentDialogClosingDeferral *wrapperInstance = new ContentDialogClosingDeferral(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialogClosingDeferral^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ContentDialogClosingDeferral^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ContentDialogClosingDeferral^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapContentDialogClosingDeferral(winRtInstance));
    }


    static void Complete(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialogClosingDeferral^>(info.This())) {
        return;
      }

      ContentDialogClosingDeferral *wrapper = ContentDialogClosingDeferral::Unwrap<ContentDialogClosingDeferral>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->Complete();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }





    private:
      ::Windows::UI::Xaml::Controls::ContentDialogClosingDeferral^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapContentDialogClosingDeferral(::Windows::UI::Xaml::Controls::ContentDialogClosingDeferral^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ContentDialogClosingDeferral^ UnwrapContentDialogClosingDeferral(Local<Value> value);
  };

  Persistent<FunctionTemplate> ContentDialogClosingDeferral::s_constructorTemplate;

  v8::Local<v8::Value> WrapContentDialogClosingDeferral(::Windows::UI::Xaml::Controls::ContentDialogClosingDeferral^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ContentDialogClosingDeferral::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ContentDialogClosingDeferral^ UnwrapContentDialogClosingDeferral(Local<Value> value) {
     return ContentDialogClosingDeferral::Unwrap<ContentDialogClosingDeferral>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitContentDialogClosingDeferral(Local<Object> exports) {
    ContentDialogClosingDeferral::Init(exports);
  }

  class ContentDialogClosingEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ContentDialogClosingEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "getDeferral", GetDeferral);
          



          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cancel").ToLocalChecked(), CancelGetter, CancelSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("result").ToLocalChecked(), ResultGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("ContentDialogClosingEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ContentDialogClosingEventArgs(::Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ContentDialogClosingEventArgs *wrapperInstance = new ContentDialogClosingEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapContentDialogClosingEventArgs(winRtInstance));
    }


    static void GetDeferral(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs^>(info.This())) {
        return;
      }

      ContentDialogClosingEventArgs *wrapper = ContentDialogClosingEventArgs::Unwrap<ContentDialogClosingEventArgs>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          ::Windows::UI::Xaml::Controls::ContentDialogClosingDeferral^ result;
          result = wrapper->_instance->GetDeferral();
          info.GetReturnValue().Set(WrapContentDialogClosingDeferral(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void CancelGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs^>(info.This())) {
        return;
      }

      ContentDialogClosingEventArgs *wrapper = ContentDialogClosingEventArgs::Unwrap<ContentDialogClosingEventArgs>(info.This());

      try  {
        bool result = wrapper->_instance->Cancel;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CancelSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs^>(info.This())) {
        return;
      }

      ContentDialogClosingEventArgs *wrapper = ContentDialogClosingEventArgs::Unwrap<ContentDialogClosingEventArgs>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->Cancel = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResultGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs^>(info.This())) {
        return;
      }

      ContentDialogClosingEventArgs *wrapper = ContentDialogClosingEventArgs::Unwrap<ContentDialogClosingEventArgs>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ContentDialogResult result = wrapper->_instance->Result;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapContentDialogClosingEventArgs(::Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs^ UnwrapContentDialogClosingEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> ContentDialogClosingEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapContentDialogClosingEventArgs(::Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ContentDialogClosingEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs^ UnwrapContentDialogClosingEventArgs(Local<Value> value) {
     return ContentDialogClosingEventArgs::Unwrap<ContentDialogClosingEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitContentDialogClosingEventArgs(Local<Object> exports) {
    ContentDialogClosingEventArgs::Init(exports);
  }

  class ContentDialogOpenedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ContentDialogOpenedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);






        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("ContentDialogOpenedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ContentDialogOpenedEventArgs(::Windows::UI::Xaml::Controls::ContentDialogOpenedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ContentDialogOpenedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialogOpenedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ContentDialogOpenedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ContentDialogOpenedEventArgs *wrapperInstance = new ContentDialogOpenedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialogOpenedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ContentDialogOpenedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ContentDialogOpenedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapContentDialogOpenedEventArgs(winRtInstance));
    }







    private:
      ::Windows::UI::Xaml::Controls::ContentDialogOpenedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapContentDialogOpenedEventArgs(::Windows::UI::Xaml::Controls::ContentDialogOpenedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ContentDialogOpenedEventArgs^ UnwrapContentDialogOpenedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> ContentDialogOpenedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapContentDialogOpenedEventArgs(::Windows::UI::Xaml::Controls::ContentDialogOpenedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ContentDialogOpenedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ContentDialogOpenedEventArgs^ UnwrapContentDialogOpenedEventArgs(Local<Value> value) {
     return ContentDialogOpenedEventArgs::Unwrap<ContentDialogOpenedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitContentDialogOpenedEventArgs(Local<Object> exports) {
    ContentDialogOpenedEventArgs::Init(exports);
  }

  class DatePickerValueChangedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("DatePickerValueChangedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("newDate").ToLocalChecked(), NewDateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("oldDate").ToLocalChecked(), OldDateGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("DatePickerValueChangedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      DatePickerValueChangedEventArgs(::Windows::UI::Xaml::Controls::DatePickerValueChangedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::DatePickerValueChangedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerValueChangedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::DatePickerValueChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      DatePickerValueChangedEventArgs *wrapperInstance = new DatePickerValueChangedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerValueChangedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::DatePickerValueChangedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::DatePickerValueChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapDatePickerValueChangedEventArgs(winRtInstance));
    }





    static void NewDateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerValueChangedEventArgs^>(info.This())) {
        return;
      }

      DatePickerValueChangedEventArgs *wrapper = DatePickerValueChangedEventArgs::Unwrap<DatePickerValueChangedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::DateTime result = wrapper->_instance->NewDate;
        info.GetReturnValue().Set(NodeRT::Utils::DateTimeToJS(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OldDateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerValueChangedEventArgs^>(info.This())) {
        return;
      }

      DatePickerValueChangedEventArgs *wrapper = DatePickerValueChangedEventArgs::Unwrap<DatePickerValueChangedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::DateTime result = wrapper->_instance->OldDate;
        info.GetReturnValue().Set(NodeRT::Utils::DateTimeToJS(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::DatePickerValueChangedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapDatePickerValueChangedEventArgs(::Windows::UI::Xaml::Controls::DatePickerValueChangedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::DatePickerValueChangedEventArgs^ UnwrapDatePickerValueChangedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> DatePickerValueChangedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapDatePickerValueChangedEventArgs(::Windows::UI::Xaml::Controls::DatePickerValueChangedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(DatePickerValueChangedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::DatePickerValueChangedEventArgs^ UnwrapDatePickerValueChangedEventArgs(Local<Value> value) {
     return DatePickerValueChangedEventArgs::Unwrap<DatePickerValueChangedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitDatePickerValueChangedEventArgs(Local<Object> exports) {
    DatePickerValueChangedEventArgs::Init(exports);
  }

  class DynamicOverflowItemsChangingEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("DynamicOverflowItemsChangingEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("action").ToLocalChecked(), ActionGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("DynamicOverflowItemsChangingEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      DynamicOverflowItemsChangingEventArgs(::Windows::UI::Xaml::Controls::DynamicOverflowItemsChangingEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::DynamicOverflowItemsChangingEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DynamicOverflowItemsChangingEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::DynamicOverflowItemsChangingEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::DynamicOverflowItemsChangingEventArgs();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      DynamicOverflowItemsChangingEventArgs *wrapperInstance = new DynamicOverflowItemsChangingEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DynamicOverflowItemsChangingEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::DynamicOverflowItemsChangingEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::DynamicOverflowItemsChangingEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapDynamicOverflowItemsChangingEventArgs(winRtInstance));
    }





    static void ActionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DynamicOverflowItemsChangingEventArgs^>(info.This())) {
        return;
      }

      DynamicOverflowItemsChangingEventArgs *wrapper = DynamicOverflowItemsChangingEventArgs::Unwrap<DynamicOverflowItemsChangingEventArgs>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::CommandBarDynamicOverflowAction result = wrapper->_instance->Action;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::DynamicOverflowItemsChangingEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapDynamicOverflowItemsChangingEventArgs(::Windows::UI::Xaml::Controls::DynamicOverflowItemsChangingEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::DynamicOverflowItemsChangingEventArgs^ UnwrapDynamicOverflowItemsChangingEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> DynamicOverflowItemsChangingEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapDynamicOverflowItemsChangingEventArgs(::Windows::UI::Xaml::Controls::DynamicOverflowItemsChangingEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(DynamicOverflowItemsChangingEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::DynamicOverflowItemsChangingEventArgs^ UnwrapDynamicOverflowItemsChangingEventArgs(Local<Value> value) {
     return DynamicOverflowItemsChangingEventArgs::Unwrap<DynamicOverflowItemsChangingEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitDynamicOverflowItemsChangingEventArgs(Local<Object> exports) {
    DynamicOverflowItemsChangingEventArgs::Init(exports);
  }

  class HubSectionCollection : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("HubSectionCollection").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "getAt", GetAt);
            Nan::SetPrototypeMethod(localRef, "getView", GetView);
            Nan::SetPrototypeMethod(localRef, "indexOf", IndexOf);
            Nan::SetPrototypeMethod(localRef, "setAt", SetAt);
            Nan::SetPrototypeMethod(localRef, "insertAt", InsertAt);
            Nan::SetPrototypeMethod(localRef, "removeAt", RemoveAt);
            Nan::SetPrototypeMethod(localRef, "append", Append);
            Nan::SetPrototypeMethod(localRef, "removeAtEnd", RemoveAtEnd);
            Nan::SetPrototypeMethod(localRef, "clear", Clear);
            Nan::SetPrototypeMethod(localRef, "getMany", GetMany);
            Nan::SetPrototypeMethod(localRef, "replaceAll", ReplaceAll);
            Nan::SetPrototypeMethod(localRef, "first", First);
          




        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("HubSectionCollection").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      HubSectionCollection(::Windows::UI::Xaml::Controls::HubSectionCollection^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::HubSectionCollection^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSectionCollection^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::HubSectionCollection^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      HubSectionCollection *wrapperInstance = new HubSectionCollection(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSectionCollection^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::HubSectionCollection^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::HubSectionCollection^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapHubSectionCollection(winRtInstance));
    }


    static void GetAt(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSectionCollection^>(info.This())) {
        return;
      }

      HubSectionCollection *wrapper = HubSectionCollection::Unwrap<HubSectionCollection>(info.This());

      if (info.Length() == 1
        && info[0]->IsUint32())
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::HubSection^ result;
          result = wrapper->_instance->GetAt(arg0);
          info.GetReturnValue().Set(WrapHubSection(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetView(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSectionCollection^>(info.This())) {
        return;
      }

      HubSectionCollection *wrapper = HubSectionCollection::Unwrap<HubSectionCollection>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Controls::HubSection^>^ result;
          result = wrapper->_instance->GetView();
          info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Controls::HubSection^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Controls::HubSection^ val) -> Local<Value> {
              return WrapHubSection(val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Controls::HubSection^ {
              return UnwrapHubSection(value);
            }
          ));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void IndexOf(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSectionCollection^>(info.This())) {
        return;
      }

      HubSectionCollection *wrapper = HubSectionCollection::Unwrap<HubSectionCollection>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::HubSection^ arg0 = UnwrapHubSection(info[0]);
          unsigned int arg1;
          
          bool result;
          result = wrapper->_instance->IndexOf(arg0, &arg1);
          Local<Object> resObj = Nan::New<Object>();
          Nan::Set(resObj, Nan::New<String>("boolean").ToLocalChecked(), Nan::New<Boolean>(result));
          Nan::Set(resObj, Nan::New<String>("index").ToLocalChecked(), Nan::New<Integer>(arg1));
          info.GetReturnValue().Set(resObj);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void SetAt(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSectionCollection^>(info.This())) {
        return;
      }

      HubSectionCollection *wrapper = HubSectionCollection::Unwrap<HubSectionCollection>(info.This());

      if (info.Length() == 2
        && info[0]->IsUint32()
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info[1]))
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          ::Windows::UI::Xaml::Controls::HubSection^ arg1 = UnwrapHubSection(info[1]);
          
          wrapper->_instance->SetAt(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void InsertAt(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSectionCollection^>(info.This())) {
        return;
      }

      HubSectionCollection *wrapper = HubSectionCollection::Unwrap<HubSectionCollection>(info.This());

      if (info.Length() == 2
        && info[0]->IsUint32()
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info[1]))
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          ::Windows::UI::Xaml::Controls::HubSection^ arg1 = UnwrapHubSection(info[1]);
          
          wrapper->_instance->InsertAt(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void RemoveAt(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSectionCollection^>(info.This())) {
        return;
      }

      HubSectionCollection *wrapper = HubSectionCollection::Unwrap<HubSectionCollection>(info.This());

      if (info.Length() == 1
        && info[0]->IsUint32())
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          
          wrapper->_instance->RemoveAt(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Append(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSectionCollection^>(info.This())) {
        return;
      }

      HubSectionCollection *wrapper = HubSectionCollection::Unwrap<HubSectionCollection>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::HubSection^ arg0 = UnwrapHubSection(info[0]);
          
          wrapper->_instance->Append(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void RemoveAtEnd(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSectionCollection^>(info.This())) {
        return;
      }

      HubSectionCollection *wrapper = HubSectionCollection::Unwrap<HubSectionCollection>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->RemoveAtEnd();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Clear(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSectionCollection^>(info.This())) {
        return;
      }

      HubSectionCollection *wrapper = HubSectionCollection::Unwrap<HubSectionCollection>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->Clear();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetMany(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Not implemented")));
    }
    static void ReplaceAll(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSectionCollection^>(info.This())) {
        return;
      }

      HubSectionCollection *wrapper = HubSectionCollection::Unwrap<HubSectionCollection>(info.This());

      if (info.Length() == 1
        && (NodeRT::Utils::IsWinRtWrapperOf<::Platform::Array<::Windows::UI::Xaml::Controls::HubSection^>^>(info[0]) || info[0]->IsArray()))
      {
        try
        {
          ::Platform::Array<::Windows::UI::Xaml::Controls::HubSection^>^ arg0 = 
            [] (v8::Local<v8::Value> value) -> ::Platform::Array<::Windows::UI::Xaml::Controls::HubSection^>^
            {
              if (value->IsArray())
              {
                return NodeRT::Collections::JsArrayToWinrtArray<::Windows::UI::Xaml::Controls::HubSection^>(value.As<Array>(), 
                 [](Local<Value> value) -> bool {
                   return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(value);
                 },
                 [](Local<Value> value) -> ::Windows::UI::Xaml::Controls::HubSection^ {
                   return UnwrapHubSection(value);
                 }
                );
              }
              else
              {
                return dynamic_cast<::Platform::Array<::Windows::UI::Xaml::Controls::HubSection^>^>(NodeRT::Utils::GetObjectInstance(value));
              }
            } (info[0]);
          
          wrapper->_instance->ReplaceAll(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void First(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSectionCollection^>(info.This())) {
        return;
      }

      HubSectionCollection *wrapper = HubSectionCollection::Unwrap<HubSectionCollection>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          ::Windows::Foundation::Collections::IIterator<::Windows::UI::Xaml::Controls::HubSection^>^ result;
          result = wrapper->_instance->First();
          info.GetReturnValue().Set(NodeRT::Collections::IteratorWrapper<::Windows::UI::Xaml::Controls::HubSection^>::CreateIteratorWrapper(result, 
            [](::Windows::UI::Xaml::Controls::HubSection^ val) -> Local<Value> {
              return WrapHubSection(val);
            }
          ));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }





    private:
      ::Windows::UI::Xaml::Controls::HubSectionCollection^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapHubSectionCollection(::Windows::UI::Xaml::Controls::HubSectionCollection^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::HubSectionCollection^ UnwrapHubSectionCollection(Local<Value> value);
  };

  Persistent<FunctionTemplate> HubSectionCollection::s_constructorTemplate;

  v8::Local<v8::Value> WrapHubSectionCollection(::Windows::UI::Xaml::Controls::HubSectionCollection^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(HubSectionCollection::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::HubSectionCollection^ UnwrapHubSectionCollection(Local<Value> value) {
     return HubSectionCollection::Unwrap<HubSectionCollection>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitHubSectionCollection(Local<Object> exports) {
    HubSectionCollection::Init(exports);
  }

  class ListViewPersistenceHelper : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ListViewPersistenceHelper").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);

        Local<Function> func;
        Local<FunctionTemplate> funcTemplate;





        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetMethod(constructor, "getRelativeScrollPosition", GetRelativeScrollPosition);
        func = Nan::GetFunction(Nan::New<FunctionTemplate>(SetRelativeScrollPositionAsync)).ToLocalChecked();
        Nan::Set(constructor, Nan::New<String>("setRelativeScrollPositionAsync").ToLocalChecked(), func);


        Nan::Set(exports, Nan::New<String>("ListViewPersistenceHelper").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ListViewPersistenceHelper(::Windows::UI::Xaml::Controls::ListViewPersistenceHelper^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ListViewPersistenceHelper^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewPersistenceHelper^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ListViewPersistenceHelper^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ListViewPersistenceHelper *wrapperInstance = new ListViewPersistenceHelper(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewPersistenceHelper^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ListViewPersistenceHelper^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ListViewPersistenceHelper^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapListViewPersistenceHelper(winRtInstance));
    }




    static void SetRelativeScrollPositionAsync(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 0 || !info[info.Length() -1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: No callback was given")));
        return;
      }

      ::Windows::Foundation::IAsyncAction^ op;


      if (info.Length() == 4
          && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info[0])
          && info[1]->IsString()
          && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewKeyToItemHandler^>(info[2]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::ListViewBase^ arg0 = UnwrapListViewBase(info[0]);
          Platform::String^ arg1 = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), info[1])));
          ::Windows::UI::Xaml::Controls::ListViewKeyToItemHandler^ arg2 = dynamic_cast<::Windows::UI::Xaml::Controls::ListViewKeyToItemHandler^>(NodeRT::Utils::GetObjectInstance(info[2]));
            
          op = ::Windows::UI::Xaml::Controls::ListViewPersistenceHelper::SetRelativeScrollPositionAsync(arg0,arg1,arg2);
        } catch (Platform::Exception ^exception) {
            NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
            return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }

      auto opTask = create_task(op);
      uv_async_t* asyncToken = NodeUtils::Async::GetAsyncToken(info[info.Length() -1].As<Function>());

      opTask.then( [asyncToken] (task<void> t)
      {
        try {
          t.get();
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [](NodeUtils::InvokeCallbackDelegate invokeCallback) {


                Local<Value> args[] = {Undefined()};


            invokeCallback(_countof(args), args);
          });
        }
        catch (Platform::Exception^ exception)
        {
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [exception](NodeUtils::InvokeCallbackDelegate invokeCallback) {

            Local<Value> error = NodeRT::Utils::WinRtExceptionToJsError(exception);

            Local<Value> args[] = {error};
            invokeCallback(_countof(args), args);
          });
        }
      });
    }


    static void GetRelativeScrollPosition(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItemToKeyHandler^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::ListViewBase^ arg0 = UnwrapListViewBase(info[0]);
          ::Windows::UI::Xaml::Controls::ListViewItemToKeyHandler^ arg1 = dynamic_cast<::Windows::UI::Xaml::Controls::ListViewItemToKeyHandler^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          Platform::String^ result;
          result = ::Windows::UI::Xaml::Controls::ListViewPersistenceHelper::GetRelativeScrollPosition(arg0, arg1);
          info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    private:
      ::Windows::UI::Xaml::Controls::ListViewPersistenceHelper^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapListViewPersistenceHelper(::Windows::UI::Xaml::Controls::ListViewPersistenceHelper^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ListViewPersistenceHelper^ UnwrapListViewPersistenceHelper(Local<Value> value);
  };

  Persistent<FunctionTemplate> ListViewPersistenceHelper::s_constructorTemplate;

  v8::Local<v8::Value> WrapListViewPersistenceHelper(::Windows::UI::Xaml::Controls::ListViewPersistenceHelper^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ListViewPersistenceHelper::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ListViewPersistenceHelper^ UnwrapListViewPersistenceHelper(Local<Value> value) {
     return ListViewPersistenceHelper::Unwrap<ListViewPersistenceHelper>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitListViewPersistenceHelper(Local<Object> exports) {
    ListViewPersistenceHelper::Init(exports);
  }

  class RichEditBoxTextChangingEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("RichEditBoxTextChangingEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isContentChanging").ToLocalChecked(), IsContentChangingGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("RichEditBoxTextChangingEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      RichEditBoxTextChangingEventArgs(::Windows::UI::Xaml::Controls::RichEditBoxTextChangingEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::RichEditBoxTextChangingEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBoxTextChangingEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::RichEditBoxTextChangingEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      RichEditBoxTextChangingEventArgs *wrapperInstance = new RichEditBoxTextChangingEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBoxTextChangingEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::RichEditBoxTextChangingEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::RichEditBoxTextChangingEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapRichEditBoxTextChangingEventArgs(winRtInstance));
    }





    static void IsContentChangingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBoxTextChangingEventArgs^>(info.This())) {
        return;
      }

      RichEditBoxTextChangingEventArgs *wrapper = RichEditBoxTextChangingEventArgs::Unwrap<RichEditBoxTextChangingEventArgs>(info.This());

      try  {
        bool result = wrapper->_instance->IsContentChanging;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::RichEditBoxTextChangingEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapRichEditBoxTextChangingEventArgs(::Windows::UI::Xaml::Controls::RichEditBoxTextChangingEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::RichEditBoxTextChangingEventArgs^ UnwrapRichEditBoxTextChangingEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> RichEditBoxTextChangingEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapRichEditBoxTextChangingEventArgs(::Windows::UI::Xaml::Controls::RichEditBoxTextChangingEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(RichEditBoxTextChangingEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::RichEditBoxTextChangingEventArgs^ UnwrapRichEditBoxTextChangingEventArgs(Local<Value> value) {
     return RichEditBoxTextChangingEventArgs::Unwrap<RichEditBoxTextChangingEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitRichEditBoxTextChangingEventArgs(Local<Object> exports) {
    RichEditBoxTextChangingEventArgs::Init(exports);
  }

  class ScrollViewerView : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ScrollViewerView").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalOffset").ToLocalChecked(), HorizontalOffsetGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalOffset").ToLocalChecked(), VerticalOffsetGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("zoomFactor").ToLocalChecked(), ZoomFactorGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("ScrollViewerView").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ScrollViewerView(::Windows::UI::Xaml::Controls::ScrollViewerView^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ScrollViewerView^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewerView^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ScrollViewerView^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ScrollViewerView *wrapperInstance = new ScrollViewerView(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewerView^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ScrollViewerView^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ScrollViewerView^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapScrollViewerView(winRtInstance));
    }





    static void HorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewerView^>(info.This())) {
        return;
      }

      ScrollViewerView *wrapper = ScrollViewerView::Unwrap<ScrollViewerView>(info.This());

      try  {
        double result = wrapper->_instance->HorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewerView^>(info.This())) {
        return;
      }

      ScrollViewerView *wrapper = ScrollViewerView::Unwrap<ScrollViewerView>(info.This());

      try  {
        double result = wrapper->_instance->VerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ZoomFactorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewerView^>(info.This())) {
        return;
      }

      ScrollViewerView *wrapper = ScrollViewerView::Unwrap<ScrollViewerView>(info.This());

      try  {
        float result = wrapper->_instance->ZoomFactor;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::ScrollViewerView^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapScrollViewerView(::Windows::UI::Xaml::Controls::ScrollViewerView^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ScrollViewerView^ UnwrapScrollViewerView(Local<Value> value);
  };

  Persistent<FunctionTemplate> ScrollViewerView::s_constructorTemplate;

  v8::Local<v8::Value> WrapScrollViewerView(::Windows::UI::Xaml::Controls::ScrollViewerView^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ScrollViewerView::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ScrollViewerView^ UnwrapScrollViewerView(Local<Value> value) {
     return ScrollViewerView::Unwrap<ScrollViewerView>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitScrollViewerView(Local<Object> exports) {
    ScrollViewerView::Init(exports);
  }

  class ScrollViewerViewChangedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ScrollViewerViewChangedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isIntermediate").ToLocalChecked(), IsIntermediateGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("ScrollViewerViewChangedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ScrollViewerViewChangedEventArgs(::Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ScrollViewerViewChangedEventArgs *wrapperInstance = new ScrollViewerViewChangedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapScrollViewerViewChangedEventArgs(winRtInstance));
    }





    static void IsIntermediateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs^>(info.This())) {
        return;
      }

      ScrollViewerViewChangedEventArgs *wrapper = ScrollViewerViewChangedEventArgs::Unwrap<ScrollViewerViewChangedEventArgs>(info.This());

      try  {
        bool result = wrapper->_instance->IsIntermediate;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapScrollViewerViewChangedEventArgs(::Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs^ UnwrapScrollViewerViewChangedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> ScrollViewerViewChangedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapScrollViewerViewChangedEventArgs(::Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ScrollViewerViewChangedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs^ UnwrapScrollViewerViewChangedEventArgs(Local<Value> value) {
     return ScrollViewerViewChangedEventArgs::Unwrap<ScrollViewerViewChangedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitScrollViewerViewChangedEventArgs(Local<Object> exports) {
    ScrollViewerViewChangedEventArgs::Init(exports);
  }

  class ScrollViewerViewChangingEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ScrollViewerViewChangingEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("finalView").ToLocalChecked(), FinalViewGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isInertial").ToLocalChecked(), IsInertialGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("nextView").ToLocalChecked(), NextViewGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("ScrollViewerViewChangingEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ScrollViewerViewChangingEventArgs(::Windows::UI::Xaml::Controls::ScrollViewerViewChangingEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ScrollViewerViewChangingEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewerViewChangingEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ScrollViewerViewChangingEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ScrollViewerViewChangingEventArgs *wrapperInstance = new ScrollViewerViewChangingEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewerViewChangingEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ScrollViewerViewChangingEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ScrollViewerViewChangingEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapScrollViewerViewChangingEventArgs(winRtInstance));
    }





    static void FinalViewGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewerViewChangingEventArgs^>(info.This())) {
        return;
      }

      ScrollViewerViewChangingEventArgs *wrapper = ScrollViewerViewChangingEventArgs::Unwrap<ScrollViewerViewChangingEventArgs>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ScrollViewerView^ result = wrapper->_instance->FinalView;
        info.GetReturnValue().Set(WrapScrollViewerView(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsInertialGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewerViewChangingEventArgs^>(info.This())) {
        return;
      }

      ScrollViewerViewChangingEventArgs *wrapper = ScrollViewerViewChangingEventArgs::Unwrap<ScrollViewerViewChangingEventArgs>(info.This());

      try  {
        bool result = wrapper->_instance->IsInertial;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NextViewGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewerViewChangingEventArgs^>(info.This())) {
        return;
      }

      ScrollViewerViewChangingEventArgs *wrapper = ScrollViewerViewChangingEventArgs::Unwrap<ScrollViewerViewChangingEventArgs>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ScrollViewerView^ result = wrapper->_instance->NextView;
        info.GetReturnValue().Set(WrapScrollViewerView(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::ScrollViewerViewChangingEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapScrollViewerViewChangingEventArgs(::Windows::UI::Xaml::Controls::ScrollViewerViewChangingEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ScrollViewerViewChangingEventArgs^ UnwrapScrollViewerViewChangingEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> ScrollViewerViewChangingEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapScrollViewerViewChangingEventArgs(::Windows::UI::Xaml::Controls::ScrollViewerViewChangingEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ScrollViewerViewChangingEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ScrollViewerViewChangingEventArgs^ UnwrapScrollViewerViewChangingEventArgs(Local<Value> value) {
     return ScrollViewerViewChangingEventArgs::Unwrap<ScrollViewerViewChangingEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitScrollViewerViewChangingEventArgs(Local<Object> exports) {
    ScrollViewerViewChangingEventArgs::Init(exports);
  }

  class SearchBoxQueryChangedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("SearchBoxQueryChangedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("linguisticDetails").ToLocalChecked(), LinguisticDetailsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("queryText").ToLocalChecked(), QueryTextGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("SearchBoxQueryChangedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      SearchBoxQueryChangedEventArgs(::Windows::UI::Xaml::Controls::SearchBoxQueryChangedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::SearchBoxQueryChangedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBoxQueryChangedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::SearchBoxQueryChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      SearchBoxQueryChangedEventArgs *wrapperInstance = new SearchBoxQueryChangedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBoxQueryChangedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::SearchBoxQueryChangedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::SearchBoxQueryChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapSearchBoxQueryChangedEventArgs(winRtInstance));
    }





    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBoxQueryChangedEventArgs^>(info.This())) {
        return;
      }

      SearchBoxQueryChangedEventArgs *wrapper = SearchBoxQueryChangedEventArgs::Unwrap<SearchBoxQueryChangedEventArgs>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LinguisticDetailsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBoxQueryChangedEventArgs^>(info.This())) {
        return;
      }

      SearchBoxQueryChangedEventArgs *wrapper = SearchBoxQueryChangedEventArgs::Unwrap<SearchBoxQueryChangedEventArgs>(info.This());

      try  {
        ::Windows::ApplicationModel::Search::SearchQueryLinguisticDetails^ result = wrapper->_instance->LinguisticDetails;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Search", "SearchQueryLinguisticDetails", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void QueryTextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBoxQueryChangedEventArgs^>(info.This())) {
        return;
      }

      SearchBoxQueryChangedEventArgs *wrapper = SearchBoxQueryChangedEventArgs::Unwrap<SearchBoxQueryChangedEventArgs>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->QueryText;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::SearchBoxQueryChangedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapSearchBoxQueryChangedEventArgs(::Windows::UI::Xaml::Controls::SearchBoxQueryChangedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::SearchBoxQueryChangedEventArgs^ UnwrapSearchBoxQueryChangedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> SearchBoxQueryChangedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapSearchBoxQueryChangedEventArgs(::Windows::UI::Xaml::Controls::SearchBoxQueryChangedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(SearchBoxQueryChangedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::SearchBoxQueryChangedEventArgs^ UnwrapSearchBoxQueryChangedEventArgs(Local<Value> value) {
     return SearchBoxQueryChangedEventArgs::Unwrap<SearchBoxQueryChangedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitSearchBoxQueryChangedEventArgs(Local<Object> exports) {
    SearchBoxQueryChangedEventArgs::Init(exports);
  }

  class SearchBoxQuerySubmittedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("SearchBoxQuerySubmittedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyModifiers").ToLocalChecked(), KeyModifiersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("linguisticDetails").ToLocalChecked(), LinguisticDetailsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("queryText").ToLocalChecked(), QueryTextGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("SearchBoxQuerySubmittedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      SearchBoxQuerySubmittedEventArgs(::Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      SearchBoxQuerySubmittedEventArgs *wrapperInstance = new SearchBoxQuerySubmittedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapSearchBoxQuerySubmittedEventArgs(winRtInstance));
    }





    static void KeyModifiersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs^>(info.This())) {
        return;
      }

      SearchBoxQuerySubmittedEventArgs *wrapper = SearchBoxQuerySubmittedEventArgs::Unwrap<SearchBoxQuerySubmittedEventArgs>(info.This());

      try  {
        ::Windows::System::VirtualKeyModifiers result = wrapper->_instance->KeyModifiers;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs^>(info.This())) {
        return;
      }

      SearchBoxQuerySubmittedEventArgs *wrapper = SearchBoxQuerySubmittedEventArgs::Unwrap<SearchBoxQuerySubmittedEventArgs>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LinguisticDetailsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs^>(info.This())) {
        return;
      }

      SearchBoxQuerySubmittedEventArgs *wrapper = SearchBoxQuerySubmittedEventArgs::Unwrap<SearchBoxQuerySubmittedEventArgs>(info.This());

      try  {
        ::Windows::ApplicationModel::Search::SearchQueryLinguisticDetails^ result = wrapper->_instance->LinguisticDetails;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Search", "SearchQueryLinguisticDetails", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void QueryTextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs^>(info.This())) {
        return;
      }

      SearchBoxQuerySubmittedEventArgs *wrapper = SearchBoxQuerySubmittedEventArgs::Unwrap<SearchBoxQuerySubmittedEventArgs>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->QueryText;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapSearchBoxQuerySubmittedEventArgs(::Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs^ UnwrapSearchBoxQuerySubmittedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> SearchBoxQuerySubmittedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapSearchBoxQuerySubmittedEventArgs(::Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(SearchBoxQuerySubmittedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs^ UnwrapSearchBoxQuerySubmittedEventArgs(Local<Value> value) {
     return SearchBoxQuerySubmittedEventArgs::Unwrap<SearchBoxQuerySubmittedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitSearchBoxQuerySubmittedEventArgs(Local<Object> exports) {
    SearchBoxQuerySubmittedEventArgs::Init(exports);
  }

  class SearchBoxResultSuggestionChosenEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("SearchBoxResultSuggestionChosenEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyModifiers").ToLocalChecked(), KeyModifiersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("SearchBoxResultSuggestionChosenEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      SearchBoxResultSuggestionChosenEventArgs(::Windows::UI::Xaml::Controls::SearchBoxResultSuggestionChosenEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::SearchBoxResultSuggestionChosenEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBoxResultSuggestionChosenEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::SearchBoxResultSuggestionChosenEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::SearchBoxResultSuggestionChosenEventArgs();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      SearchBoxResultSuggestionChosenEventArgs *wrapperInstance = new SearchBoxResultSuggestionChosenEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBoxResultSuggestionChosenEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::SearchBoxResultSuggestionChosenEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::SearchBoxResultSuggestionChosenEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapSearchBoxResultSuggestionChosenEventArgs(winRtInstance));
    }





    static void KeyModifiersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBoxResultSuggestionChosenEventArgs^>(info.This())) {
        return;
      }

      SearchBoxResultSuggestionChosenEventArgs *wrapper = SearchBoxResultSuggestionChosenEventArgs::Unwrap<SearchBoxResultSuggestionChosenEventArgs>(info.This());

      try  {
        ::Windows::System::VirtualKeyModifiers result = wrapper->_instance->KeyModifiers;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBoxResultSuggestionChosenEventArgs^>(info.This())) {
        return;
      }

      SearchBoxResultSuggestionChosenEventArgs *wrapper = SearchBoxResultSuggestionChosenEventArgs::Unwrap<SearchBoxResultSuggestionChosenEventArgs>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::SearchBoxResultSuggestionChosenEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapSearchBoxResultSuggestionChosenEventArgs(::Windows::UI::Xaml::Controls::SearchBoxResultSuggestionChosenEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::SearchBoxResultSuggestionChosenEventArgs^ UnwrapSearchBoxResultSuggestionChosenEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> SearchBoxResultSuggestionChosenEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapSearchBoxResultSuggestionChosenEventArgs(::Windows::UI::Xaml::Controls::SearchBoxResultSuggestionChosenEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(SearchBoxResultSuggestionChosenEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::SearchBoxResultSuggestionChosenEventArgs^ UnwrapSearchBoxResultSuggestionChosenEventArgs(Local<Value> value) {
     return SearchBoxResultSuggestionChosenEventArgs::Unwrap<SearchBoxResultSuggestionChosenEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitSearchBoxResultSuggestionChosenEventArgs(Local<Object> exports) {
    SearchBoxResultSuggestionChosenEventArgs::Init(exports);
  }

  class SearchBoxSuggestionsRequestedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("SearchBoxSuggestionsRequestedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("linguisticDetails").ToLocalChecked(), LinguisticDetailsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("queryText").ToLocalChecked(), QueryTextGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("request").ToLocalChecked(), RequestGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("SearchBoxSuggestionsRequestedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      SearchBoxSuggestionsRequestedEventArgs(::Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      SearchBoxSuggestionsRequestedEventArgs *wrapperInstance = new SearchBoxSuggestionsRequestedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapSearchBoxSuggestionsRequestedEventArgs(winRtInstance));
    }





    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs^>(info.This())) {
        return;
      }

      SearchBoxSuggestionsRequestedEventArgs *wrapper = SearchBoxSuggestionsRequestedEventArgs::Unwrap<SearchBoxSuggestionsRequestedEventArgs>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LinguisticDetailsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs^>(info.This())) {
        return;
      }

      SearchBoxSuggestionsRequestedEventArgs *wrapper = SearchBoxSuggestionsRequestedEventArgs::Unwrap<SearchBoxSuggestionsRequestedEventArgs>(info.This());

      try  {
        ::Windows::ApplicationModel::Search::SearchQueryLinguisticDetails^ result = wrapper->_instance->LinguisticDetails;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Search", "SearchQueryLinguisticDetails", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void QueryTextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs^>(info.This())) {
        return;
      }

      SearchBoxSuggestionsRequestedEventArgs *wrapper = SearchBoxSuggestionsRequestedEventArgs::Unwrap<SearchBoxSuggestionsRequestedEventArgs>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->QueryText;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs^>(info.This())) {
        return;
      }

      SearchBoxSuggestionsRequestedEventArgs *wrapper = SearchBoxSuggestionsRequestedEventArgs::Unwrap<SearchBoxSuggestionsRequestedEventArgs>(info.This());

      try  {
        ::Windows::ApplicationModel::Search::SearchSuggestionsRequest^ result = wrapper->_instance->Request;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Search", "SearchSuggestionsRequest", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapSearchBoxSuggestionsRequestedEventArgs(::Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs^ UnwrapSearchBoxSuggestionsRequestedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> SearchBoxSuggestionsRequestedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapSearchBoxSuggestionsRequestedEventArgs(::Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(SearchBoxSuggestionsRequestedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs^ UnwrapSearchBoxSuggestionsRequestedEventArgs(Local<Value> value) {
     return SearchBoxSuggestionsRequestedEventArgs::Unwrap<SearchBoxSuggestionsRequestedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitSearchBoxSuggestionsRequestedEventArgs(Local<Object> exports) {
    SearchBoxSuggestionsRequestedEventArgs::Init(exports);
  }

  class SplitViewPaneClosingEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("SplitViewPaneClosingEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cancel").ToLocalChecked(), CancelGetter, CancelSetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("SplitViewPaneClosingEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      SplitViewPaneClosingEventArgs(::Windows::UI::Xaml::Controls::SplitViewPaneClosingEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::SplitViewPaneClosingEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitViewPaneClosingEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::SplitViewPaneClosingEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      SplitViewPaneClosingEventArgs *wrapperInstance = new SplitViewPaneClosingEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitViewPaneClosingEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::SplitViewPaneClosingEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::SplitViewPaneClosingEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapSplitViewPaneClosingEventArgs(winRtInstance));
    }





    static void CancelGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitViewPaneClosingEventArgs^>(info.This())) {
        return;
      }

      SplitViewPaneClosingEventArgs *wrapper = SplitViewPaneClosingEventArgs::Unwrap<SplitViewPaneClosingEventArgs>(info.This());

      try  {
        bool result = wrapper->_instance->Cancel;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CancelSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitViewPaneClosingEventArgs^>(info.This())) {
        return;
      }

      SplitViewPaneClosingEventArgs *wrapper = SplitViewPaneClosingEventArgs::Unwrap<SplitViewPaneClosingEventArgs>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->Cancel = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::SplitViewPaneClosingEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapSplitViewPaneClosingEventArgs(::Windows::UI::Xaml::Controls::SplitViewPaneClosingEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::SplitViewPaneClosingEventArgs^ UnwrapSplitViewPaneClosingEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> SplitViewPaneClosingEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapSplitViewPaneClosingEventArgs(::Windows::UI::Xaml::Controls::SplitViewPaneClosingEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(SplitViewPaneClosingEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::SplitViewPaneClosingEventArgs^ UnwrapSplitViewPaneClosingEventArgs(Local<Value> value) {
     return SplitViewPaneClosingEventArgs::Unwrap<SplitViewPaneClosingEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitSplitViewPaneClosingEventArgs(Local<Object> exports) {
    SplitViewPaneClosingEventArgs::Init(exports);
  }

  class TimePickerValueChangedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("TimePickerValueChangedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("newTime").ToLocalChecked(), NewTimeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("oldTime").ToLocalChecked(), OldTimeGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("TimePickerValueChangedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      TimePickerValueChangedEventArgs(::Windows::UI::Xaml::Controls::TimePickerValueChangedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::TimePickerValueChangedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerValueChangedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::TimePickerValueChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      TimePickerValueChangedEventArgs *wrapperInstance = new TimePickerValueChangedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerValueChangedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::TimePickerValueChangedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::TimePickerValueChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapTimePickerValueChangedEventArgs(winRtInstance));
    }





    static void NewTimeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerValueChangedEventArgs^>(info.This())) {
        return;
      }

      TimePickerValueChangedEventArgs *wrapper = TimePickerValueChangedEventArgs::Unwrap<TimePickerValueChangedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::TimeSpan result = wrapper->_instance->NewTime;
        info.GetReturnValue().Set(Nan::New<Number>(result.Duration/10000.0));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OldTimeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerValueChangedEventArgs^>(info.This())) {
        return;
      }

      TimePickerValueChangedEventArgs *wrapper = TimePickerValueChangedEventArgs::Unwrap<TimePickerValueChangedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::TimeSpan result = wrapper->_instance->OldTime;
        info.GetReturnValue().Set(Nan::New<Number>(result.Duration/10000.0));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::TimePickerValueChangedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapTimePickerValueChangedEventArgs(::Windows::UI::Xaml::Controls::TimePickerValueChangedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::TimePickerValueChangedEventArgs^ UnwrapTimePickerValueChangedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> TimePickerValueChangedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapTimePickerValueChangedEventArgs(::Windows::UI::Xaml::Controls::TimePickerValueChangedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(TimePickerValueChangedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::TimePickerValueChangedEventArgs^ UnwrapTimePickerValueChangedEventArgs(Local<Value> value) {
     return TimePickerValueChangedEventArgs::Unwrap<TimePickerValueChangedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitTimePickerValueChangedEventArgs(Local<Object> exports) {
    TimePickerValueChangedEventArgs::Init(exports);
  }

  class WebViewContentLoadingEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("WebViewContentLoadingEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("uri").ToLocalChecked(), UriGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("WebViewContentLoadingEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      WebViewContentLoadingEventArgs(::Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      WebViewContentLoadingEventArgs *wrapperInstance = new WebViewContentLoadingEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapWebViewContentLoadingEventArgs(winRtInstance));
    }





    static void UriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs^>(info.This())) {
        return;
      }

      WebViewContentLoadingEventArgs *wrapper = WebViewContentLoadingEventArgs::Unwrap<WebViewContentLoadingEventArgs>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->Uri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapWebViewContentLoadingEventArgs(::Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs^ UnwrapWebViewContentLoadingEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> WebViewContentLoadingEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapWebViewContentLoadingEventArgs(::Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(WebViewContentLoadingEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs^ UnwrapWebViewContentLoadingEventArgs(Local<Value> value) {
     return WebViewContentLoadingEventArgs::Unwrap<WebViewContentLoadingEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitWebViewContentLoadingEventArgs(Local<Object> exports) {
    WebViewContentLoadingEventArgs::Init(exports);
  }

  class WebViewDeferredPermissionRequest : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("WebViewDeferredPermissionRequest").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "allow", Allow);
            Nan::SetPrototypeMethod(localRef, "deny", Deny);
          



          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("id").ToLocalChecked(), IdGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("permissionType").ToLocalChecked(), PermissionTypeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("uri").ToLocalChecked(), UriGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("WebViewDeferredPermissionRequest").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      WebViewDeferredPermissionRequest(::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      WebViewDeferredPermissionRequest *wrapperInstance = new WebViewDeferredPermissionRequest(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapWebViewDeferredPermissionRequest(winRtInstance));
    }


    static void Allow(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^>(info.This())) {
        return;
      }

      WebViewDeferredPermissionRequest *wrapper = WebViewDeferredPermissionRequest::Unwrap<WebViewDeferredPermissionRequest>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->Allow();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Deny(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^>(info.This())) {
        return;
      }

      WebViewDeferredPermissionRequest *wrapper = WebViewDeferredPermissionRequest::Unwrap<WebViewDeferredPermissionRequest>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->Deny();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void IdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^>(info.This())) {
        return;
      }

      WebViewDeferredPermissionRequest *wrapper = WebViewDeferredPermissionRequest::Unwrap<WebViewDeferredPermissionRequest>(info.This());

      try  {
        unsigned int result = wrapper->_instance->Id;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PermissionTypeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^>(info.This())) {
        return;
      }

      WebViewDeferredPermissionRequest *wrapper = WebViewDeferredPermissionRequest::Unwrap<WebViewDeferredPermissionRequest>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::WebViewPermissionType result = wrapper->_instance->PermissionType;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^>(info.This())) {
        return;
      }

      WebViewDeferredPermissionRequest *wrapper = WebViewDeferredPermissionRequest::Unwrap<WebViewDeferredPermissionRequest>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->Uri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapWebViewDeferredPermissionRequest(::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^ UnwrapWebViewDeferredPermissionRequest(Local<Value> value);
  };

  Persistent<FunctionTemplate> WebViewDeferredPermissionRequest::s_constructorTemplate;

  v8::Local<v8::Value> WrapWebViewDeferredPermissionRequest(::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(WebViewDeferredPermissionRequest::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^ UnwrapWebViewDeferredPermissionRequest(Local<Value> value) {
     return WebViewDeferredPermissionRequest::Unwrap<WebViewDeferredPermissionRequest>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitWebViewDeferredPermissionRequest(Local<Object> exports) {
    WebViewDeferredPermissionRequest::Init(exports);
  }

  class WebViewDOMContentLoadedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("WebViewDOMContentLoadedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("uri").ToLocalChecked(), UriGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("WebViewDOMContentLoadedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      WebViewDOMContentLoadedEventArgs(::Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      WebViewDOMContentLoadedEventArgs *wrapperInstance = new WebViewDOMContentLoadedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapWebViewDOMContentLoadedEventArgs(winRtInstance));
    }





    static void UriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs^>(info.This())) {
        return;
      }

      WebViewDOMContentLoadedEventArgs *wrapper = WebViewDOMContentLoadedEventArgs::Unwrap<WebViewDOMContentLoadedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->Uri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapWebViewDOMContentLoadedEventArgs(::Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs^ UnwrapWebViewDOMContentLoadedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> WebViewDOMContentLoadedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapWebViewDOMContentLoadedEventArgs(::Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(WebViewDOMContentLoadedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs^ UnwrapWebViewDOMContentLoadedEventArgs(Local<Value> value) {
     return WebViewDOMContentLoadedEventArgs::Unwrap<WebViewDOMContentLoadedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitWebViewDOMContentLoadedEventArgs(Local<Object> exports) {
    WebViewDOMContentLoadedEventArgs::Init(exports);
  }

  class WebViewLongRunningScriptDetectedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("WebViewLongRunningScriptDetectedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("stopPageScriptExecution").ToLocalChecked(), StopPageScriptExecutionGetter, StopPageScriptExecutionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("executionTime").ToLocalChecked(), ExecutionTimeGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("WebViewLongRunningScriptDetectedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      WebViewLongRunningScriptDetectedEventArgs(::Windows::UI::Xaml::Controls::WebViewLongRunningScriptDetectedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::WebViewLongRunningScriptDetectedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewLongRunningScriptDetectedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::WebViewLongRunningScriptDetectedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      WebViewLongRunningScriptDetectedEventArgs *wrapperInstance = new WebViewLongRunningScriptDetectedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewLongRunningScriptDetectedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::WebViewLongRunningScriptDetectedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::WebViewLongRunningScriptDetectedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapWebViewLongRunningScriptDetectedEventArgs(winRtInstance));
    }





    static void StopPageScriptExecutionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewLongRunningScriptDetectedEventArgs^>(info.This())) {
        return;
      }

      WebViewLongRunningScriptDetectedEventArgs *wrapper = WebViewLongRunningScriptDetectedEventArgs::Unwrap<WebViewLongRunningScriptDetectedEventArgs>(info.This());

      try  {
        bool result = wrapper->_instance->StopPageScriptExecution;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StopPageScriptExecutionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewLongRunningScriptDetectedEventArgs^>(info.This())) {
        return;
      }

      WebViewLongRunningScriptDetectedEventArgs *wrapper = WebViewLongRunningScriptDetectedEventArgs::Unwrap<WebViewLongRunningScriptDetectedEventArgs>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->StopPageScriptExecution = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExecutionTimeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewLongRunningScriptDetectedEventArgs^>(info.This())) {
        return;
      }

      WebViewLongRunningScriptDetectedEventArgs *wrapper = WebViewLongRunningScriptDetectedEventArgs::Unwrap<WebViewLongRunningScriptDetectedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::TimeSpan result = wrapper->_instance->ExecutionTime;
        info.GetReturnValue().Set(Nan::New<Number>(result.Duration/10000.0));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::WebViewLongRunningScriptDetectedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapWebViewLongRunningScriptDetectedEventArgs(::Windows::UI::Xaml::Controls::WebViewLongRunningScriptDetectedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::WebViewLongRunningScriptDetectedEventArgs^ UnwrapWebViewLongRunningScriptDetectedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> WebViewLongRunningScriptDetectedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapWebViewLongRunningScriptDetectedEventArgs(::Windows::UI::Xaml::Controls::WebViewLongRunningScriptDetectedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(WebViewLongRunningScriptDetectedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::WebViewLongRunningScriptDetectedEventArgs^ UnwrapWebViewLongRunningScriptDetectedEventArgs(Local<Value> value) {
     return WebViewLongRunningScriptDetectedEventArgs::Unwrap<WebViewLongRunningScriptDetectedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitWebViewLongRunningScriptDetectedEventArgs(Local<Object> exports) {
    WebViewLongRunningScriptDetectedEventArgs::Init(exports);
  }

  class WebViewNavigationCompletedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("WebViewNavigationCompletedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSuccess").ToLocalChecked(), IsSuccessGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("uri").ToLocalChecked(), UriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("webErrorStatus").ToLocalChecked(), WebErrorStatusGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("WebViewNavigationCompletedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      WebViewNavigationCompletedEventArgs(::Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      WebViewNavigationCompletedEventArgs *wrapperInstance = new WebViewNavigationCompletedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapWebViewNavigationCompletedEventArgs(winRtInstance));
    }





    static void IsSuccessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs^>(info.This())) {
        return;
      }

      WebViewNavigationCompletedEventArgs *wrapper = WebViewNavigationCompletedEventArgs::Unwrap<WebViewNavigationCompletedEventArgs>(info.This());

      try  {
        bool result = wrapper->_instance->IsSuccess;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs^>(info.This())) {
        return;
      }

      WebViewNavigationCompletedEventArgs *wrapper = WebViewNavigationCompletedEventArgs::Unwrap<WebViewNavigationCompletedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->Uri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WebErrorStatusGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs^>(info.This())) {
        return;
      }

      WebViewNavigationCompletedEventArgs *wrapper = WebViewNavigationCompletedEventArgs::Unwrap<WebViewNavigationCompletedEventArgs>(info.This());

      try  {
        ::Windows::Web::WebErrorStatus result = wrapper->_instance->WebErrorStatus;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapWebViewNavigationCompletedEventArgs(::Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs^ UnwrapWebViewNavigationCompletedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> WebViewNavigationCompletedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapWebViewNavigationCompletedEventArgs(::Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(WebViewNavigationCompletedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs^ UnwrapWebViewNavigationCompletedEventArgs(Local<Value> value) {
     return WebViewNavigationCompletedEventArgs::Unwrap<WebViewNavigationCompletedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitWebViewNavigationCompletedEventArgs(Local<Object> exports) {
    WebViewNavigationCompletedEventArgs::Init(exports);
  }

  class WebViewNavigationStartingEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("WebViewNavigationStartingEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cancel").ToLocalChecked(), CancelGetter, CancelSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("uri").ToLocalChecked(), UriGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("WebViewNavigationStartingEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      WebViewNavigationStartingEventArgs(::Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      WebViewNavigationStartingEventArgs *wrapperInstance = new WebViewNavigationStartingEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapWebViewNavigationStartingEventArgs(winRtInstance));
    }





    static void CancelGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs^>(info.This())) {
        return;
      }

      WebViewNavigationStartingEventArgs *wrapper = WebViewNavigationStartingEventArgs::Unwrap<WebViewNavigationStartingEventArgs>(info.This());

      try  {
        bool result = wrapper->_instance->Cancel;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CancelSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs^>(info.This())) {
        return;
      }

      WebViewNavigationStartingEventArgs *wrapper = WebViewNavigationStartingEventArgs::Unwrap<WebViewNavigationStartingEventArgs>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->Cancel = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs^>(info.This())) {
        return;
      }

      WebViewNavigationStartingEventArgs *wrapper = WebViewNavigationStartingEventArgs::Unwrap<WebViewNavigationStartingEventArgs>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->Uri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapWebViewNavigationStartingEventArgs(::Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs^ UnwrapWebViewNavigationStartingEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> WebViewNavigationStartingEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapWebViewNavigationStartingEventArgs(::Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(WebViewNavigationStartingEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs^ UnwrapWebViewNavigationStartingEventArgs(Local<Value> value) {
     return WebViewNavigationStartingEventArgs::Unwrap<WebViewNavigationStartingEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitWebViewNavigationStartingEventArgs(Local<Object> exports) {
    WebViewNavigationStartingEventArgs::Init(exports);
  }

  class WebViewNewWindowRequestedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("WebViewNewWindowRequestedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("handled").ToLocalChecked(), HandledGetter, HandledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("referrer").ToLocalChecked(), ReferrerGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("uri").ToLocalChecked(), UriGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("WebViewNewWindowRequestedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      WebViewNewWindowRequestedEventArgs(::Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      WebViewNewWindowRequestedEventArgs *wrapperInstance = new WebViewNewWindowRequestedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapWebViewNewWindowRequestedEventArgs(winRtInstance));
    }





    static void HandledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs^>(info.This())) {
        return;
      }

      WebViewNewWindowRequestedEventArgs *wrapper = WebViewNewWindowRequestedEventArgs::Unwrap<WebViewNewWindowRequestedEventArgs>(info.This());

      try  {
        bool result = wrapper->_instance->Handled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HandledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs^>(info.This())) {
        return;
      }

      WebViewNewWindowRequestedEventArgs *wrapper = WebViewNewWindowRequestedEventArgs::Unwrap<WebViewNewWindowRequestedEventArgs>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->Handled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ReferrerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs^>(info.This())) {
        return;
      }

      WebViewNewWindowRequestedEventArgs *wrapper = WebViewNewWindowRequestedEventArgs::Unwrap<WebViewNewWindowRequestedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->Referrer;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs^>(info.This())) {
        return;
      }

      WebViewNewWindowRequestedEventArgs *wrapper = WebViewNewWindowRequestedEventArgs::Unwrap<WebViewNewWindowRequestedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->Uri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapWebViewNewWindowRequestedEventArgs(::Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs^ UnwrapWebViewNewWindowRequestedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> WebViewNewWindowRequestedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapWebViewNewWindowRequestedEventArgs(::Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(WebViewNewWindowRequestedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs^ UnwrapWebViewNewWindowRequestedEventArgs(Local<Value> value) {
     return WebViewNewWindowRequestedEventArgs::Unwrap<WebViewNewWindowRequestedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitWebViewNewWindowRequestedEventArgs(Local<Object> exports) {
    WebViewNewWindowRequestedEventArgs::Init(exports);
  }

  class WebViewPermissionRequest : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("WebViewPermissionRequest").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "defer", Defer);
            Nan::SetPrototypeMethod(localRef, "allow", Allow);
            Nan::SetPrototypeMethod(localRef, "deny", Deny);
          



          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("id").ToLocalChecked(), IdGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("permissionType").ToLocalChecked(), PermissionTypeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("state").ToLocalChecked(), StateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("uri").ToLocalChecked(), UriGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("WebViewPermissionRequest").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      WebViewPermissionRequest(::Windows::UI::Xaml::Controls::WebViewPermissionRequest^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::WebViewPermissionRequest^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewPermissionRequest^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::WebViewPermissionRequest^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      WebViewPermissionRequest *wrapperInstance = new WebViewPermissionRequest(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewPermissionRequest^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::WebViewPermissionRequest^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::WebViewPermissionRequest^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapWebViewPermissionRequest(winRtInstance));
    }


    static void Defer(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewPermissionRequest^>(info.This())) {
        return;
      }

      WebViewPermissionRequest *wrapper = WebViewPermissionRequest::Unwrap<WebViewPermissionRequest>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->Defer();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Allow(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewPermissionRequest^>(info.This())) {
        return;
      }

      WebViewPermissionRequest *wrapper = WebViewPermissionRequest::Unwrap<WebViewPermissionRequest>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->Allow();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Deny(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewPermissionRequest^>(info.This())) {
        return;
      }

      WebViewPermissionRequest *wrapper = WebViewPermissionRequest::Unwrap<WebViewPermissionRequest>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->Deny();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void IdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewPermissionRequest^>(info.This())) {
        return;
      }

      WebViewPermissionRequest *wrapper = WebViewPermissionRequest::Unwrap<WebViewPermissionRequest>(info.This());

      try  {
        unsigned int result = wrapper->_instance->Id;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PermissionTypeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewPermissionRequest^>(info.This())) {
        return;
      }

      WebViewPermissionRequest *wrapper = WebViewPermissionRequest::Unwrap<WebViewPermissionRequest>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::WebViewPermissionType result = wrapper->_instance->PermissionType;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewPermissionRequest^>(info.This())) {
        return;
      }

      WebViewPermissionRequest *wrapper = WebViewPermissionRequest::Unwrap<WebViewPermissionRequest>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::WebViewPermissionState result = wrapper->_instance->State;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewPermissionRequest^>(info.This())) {
        return;
      }

      WebViewPermissionRequest *wrapper = WebViewPermissionRequest::Unwrap<WebViewPermissionRequest>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->Uri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::WebViewPermissionRequest^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapWebViewPermissionRequest(::Windows::UI::Xaml::Controls::WebViewPermissionRequest^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::WebViewPermissionRequest^ UnwrapWebViewPermissionRequest(Local<Value> value);
  };

  Persistent<FunctionTemplate> WebViewPermissionRequest::s_constructorTemplate;

  v8::Local<v8::Value> WrapWebViewPermissionRequest(::Windows::UI::Xaml::Controls::WebViewPermissionRequest^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(WebViewPermissionRequest::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::WebViewPermissionRequest^ UnwrapWebViewPermissionRequest(Local<Value> value) {
     return WebViewPermissionRequest::Unwrap<WebViewPermissionRequest>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitWebViewPermissionRequest(Local<Object> exports) {
    WebViewPermissionRequest::Init(exports);
  }

  class WebViewPermissionRequestedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("WebViewPermissionRequestedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("permissionRequest").ToLocalChecked(), PermissionRequestGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("WebViewPermissionRequestedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      WebViewPermissionRequestedEventArgs(::Windows::UI::Xaml::Controls::WebViewPermissionRequestedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::WebViewPermissionRequestedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewPermissionRequestedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::WebViewPermissionRequestedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      WebViewPermissionRequestedEventArgs *wrapperInstance = new WebViewPermissionRequestedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewPermissionRequestedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::WebViewPermissionRequestedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::WebViewPermissionRequestedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapWebViewPermissionRequestedEventArgs(winRtInstance));
    }





    static void PermissionRequestGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewPermissionRequestedEventArgs^>(info.This())) {
        return;
      }

      WebViewPermissionRequestedEventArgs *wrapper = WebViewPermissionRequestedEventArgs::Unwrap<WebViewPermissionRequestedEventArgs>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::WebViewPermissionRequest^ result = wrapper->_instance->PermissionRequest;
        info.GetReturnValue().Set(WrapWebViewPermissionRequest(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::WebViewPermissionRequestedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapWebViewPermissionRequestedEventArgs(::Windows::UI::Xaml::Controls::WebViewPermissionRequestedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::WebViewPermissionRequestedEventArgs^ UnwrapWebViewPermissionRequestedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> WebViewPermissionRequestedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapWebViewPermissionRequestedEventArgs(::Windows::UI::Xaml::Controls::WebViewPermissionRequestedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(WebViewPermissionRequestedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::WebViewPermissionRequestedEventArgs^ UnwrapWebViewPermissionRequestedEventArgs(Local<Value> value) {
     return WebViewPermissionRequestedEventArgs::Unwrap<WebViewPermissionRequestedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitWebViewPermissionRequestedEventArgs(Local<Object> exports) {
    WebViewPermissionRequestedEventArgs::Init(exports);
  }

  class WebViewSettings : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("WebViewSettings").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isJavaScriptEnabled").ToLocalChecked(), IsJavaScriptEnabledGetter, IsJavaScriptEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isIndexedDBEnabled").ToLocalChecked(), IsIndexedDBEnabledGetter, IsIndexedDBEnabledSetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("WebViewSettings").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      WebViewSettings(::Windows::UI::Xaml::Controls::WebViewSettings^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::WebViewSettings^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewSettings^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::WebViewSettings^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      WebViewSettings *wrapperInstance = new WebViewSettings(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewSettings^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::WebViewSettings^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::WebViewSettings^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapWebViewSettings(winRtInstance));
    }





    static void IsJavaScriptEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewSettings^>(info.This())) {
        return;
      }

      WebViewSettings *wrapper = WebViewSettings::Unwrap<WebViewSettings>(info.This());

      try  {
        bool result = wrapper->_instance->IsJavaScriptEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsJavaScriptEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewSettings^>(info.This())) {
        return;
      }

      WebViewSettings *wrapper = WebViewSettings::Unwrap<WebViewSettings>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsJavaScriptEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsIndexedDBEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewSettings^>(info.This())) {
        return;
      }

      WebViewSettings *wrapper = WebViewSettings::Unwrap<WebViewSettings>(info.This());

      try  {
        bool result = wrapper->_instance->IsIndexedDBEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsIndexedDBEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewSettings^>(info.This())) {
        return;
      }

      WebViewSettings *wrapper = WebViewSettings::Unwrap<WebViewSettings>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsIndexedDBEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::WebViewSettings^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapWebViewSettings(::Windows::UI::Xaml::Controls::WebViewSettings^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::WebViewSettings^ UnwrapWebViewSettings(Local<Value> value);
  };

  Persistent<FunctionTemplate> WebViewSettings::s_constructorTemplate;

  v8::Local<v8::Value> WrapWebViewSettings(::Windows::UI::Xaml::Controls::WebViewSettings^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(WebViewSettings::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::WebViewSettings^ UnwrapWebViewSettings(Local<Value> value) {
     return WebViewSettings::Unwrap<WebViewSettings>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitWebViewSettings(Local<Object> exports) {
    WebViewSettings::Init(exports);
  }

  class WebViewUnsupportedUriSchemeIdentifiedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("WebViewUnsupportedUriSchemeIdentifiedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("handled").ToLocalChecked(), HandledGetter, HandledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("uri").ToLocalChecked(), UriGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("WebViewUnsupportedUriSchemeIdentifiedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      WebViewUnsupportedUriSchemeIdentifiedEventArgs(::Windows::UI::Xaml::Controls::WebViewUnsupportedUriSchemeIdentifiedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::WebViewUnsupportedUriSchemeIdentifiedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewUnsupportedUriSchemeIdentifiedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::WebViewUnsupportedUriSchemeIdentifiedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      WebViewUnsupportedUriSchemeIdentifiedEventArgs *wrapperInstance = new WebViewUnsupportedUriSchemeIdentifiedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewUnsupportedUriSchemeIdentifiedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::WebViewUnsupportedUriSchemeIdentifiedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::WebViewUnsupportedUriSchemeIdentifiedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapWebViewUnsupportedUriSchemeIdentifiedEventArgs(winRtInstance));
    }





    static void HandledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewUnsupportedUriSchemeIdentifiedEventArgs^>(info.This())) {
        return;
      }

      WebViewUnsupportedUriSchemeIdentifiedEventArgs *wrapper = WebViewUnsupportedUriSchemeIdentifiedEventArgs::Unwrap<WebViewUnsupportedUriSchemeIdentifiedEventArgs>(info.This());

      try  {
        bool result = wrapper->_instance->Handled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HandledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewUnsupportedUriSchemeIdentifiedEventArgs^>(info.This())) {
        return;
      }

      WebViewUnsupportedUriSchemeIdentifiedEventArgs *wrapper = WebViewUnsupportedUriSchemeIdentifiedEventArgs::Unwrap<WebViewUnsupportedUriSchemeIdentifiedEventArgs>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->Handled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewUnsupportedUriSchemeIdentifiedEventArgs^>(info.This())) {
        return;
      }

      WebViewUnsupportedUriSchemeIdentifiedEventArgs *wrapper = WebViewUnsupportedUriSchemeIdentifiedEventArgs::Unwrap<WebViewUnsupportedUriSchemeIdentifiedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->Uri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::WebViewUnsupportedUriSchemeIdentifiedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapWebViewUnsupportedUriSchemeIdentifiedEventArgs(::Windows::UI::Xaml::Controls::WebViewUnsupportedUriSchemeIdentifiedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::WebViewUnsupportedUriSchemeIdentifiedEventArgs^ UnwrapWebViewUnsupportedUriSchemeIdentifiedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> WebViewUnsupportedUriSchemeIdentifiedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapWebViewUnsupportedUriSchemeIdentifiedEventArgs(::Windows::UI::Xaml::Controls::WebViewUnsupportedUriSchemeIdentifiedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(WebViewUnsupportedUriSchemeIdentifiedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::WebViewUnsupportedUriSchemeIdentifiedEventArgs^ UnwrapWebViewUnsupportedUriSchemeIdentifiedEventArgs(Local<Value> value) {
     return WebViewUnsupportedUriSchemeIdentifiedEventArgs::Unwrap<WebViewUnsupportedUriSchemeIdentifiedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitWebViewUnsupportedUriSchemeIdentifiedEventArgs(Local<Object> exports) {
    WebViewUnsupportedUriSchemeIdentifiedEventArgs::Init(exports);
  }

  class WebViewUnviewableContentIdentifiedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("WebViewUnviewableContentIdentifiedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("referrer").ToLocalChecked(), ReferrerGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("uri").ToLocalChecked(), UriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("mediaType").ToLocalChecked(), MediaTypeGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("WebViewUnviewableContentIdentifiedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      WebViewUnviewableContentIdentifiedEventArgs(::Windows::UI::Xaml::Controls::WebViewUnviewableContentIdentifiedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::WebViewUnviewableContentIdentifiedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewUnviewableContentIdentifiedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::WebViewUnviewableContentIdentifiedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      WebViewUnviewableContentIdentifiedEventArgs *wrapperInstance = new WebViewUnviewableContentIdentifiedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewUnviewableContentIdentifiedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::WebViewUnviewableContentIdentifiedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::WebViewUnviewableContentIdentifiedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapWebViewUnviewableContentIdentifiedEventArgs(winRtInstance));
    }





    static void ReferrerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewUnviewableContentIdentifiedEventArgs^>(info.This())) {
        return;
      }

      WebViewUnviewableContentIdentifiedEventArgs *wrapper = WebViewUnviewableContentIdentifiedEventArgs::Unwrap<WebViewUnviewableContentIdentifiedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->Referrer;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewUnviewableContentIdentifiedEventArgs^>(info.This())) {
        return;
      }

      WebViewUnviewableContentIdentifiedEventArgs *wrapper = WebViewUnviewableContentIdentifiedEventArgs::Unwrap<WebViewUnviewableContentIdentifiedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->Uri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MediaTypeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewUnviewableContentIdentifiedEventArgs^>(info.This())) {
        return;
      }

      WebViewUnviewableContentIdentifiedEventArgs *wrapper = WebViewUnviewableContentIdentifiedEventArgs::Unwrap<WebViewUnviewableContentIdentifiedEventArgs>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->MediaType;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::WebViewUnviewableContentIdentifiedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapWebViewUnviewableContentIdentifiedEventArgs(::Windows::UI::Xaml::Controls::WebViewUnviewableContentIdentifiedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::WebViewUnviewableContentIdentifiedEventArgs^ UnwrapWebViewUnviewableContentIdentifiedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> WebViewUnviewableContentIdentifiedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapWebViewUnviewableContentIdentifiedEventArgs(::Windows::UI::Xaml::Controls::WebViewUnviewableContentIdentifiedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(WebViewUnviewableContentIdentifiedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::WebViewUnviewableContentIdentifiedEventArgs^ UnwrapWebViewUnviewableContentIdentifiedEventArgs(Local<Value> value) {
     return WebViewUnviewableContentIdentifiedEventArgs::Unwrap<WebViewUnviewableContentIdentifiedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitWebViewUnviewableContentIdentifiedEventArgs(Local<Object> exports) {
    WebViewUnviewableContentIdentifiedEventArgs::Init(exports);
  }

  class ColumnDefinition : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ColumnDefinition").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);


        Nan::Set(exports, Nan::New<String>("ColumnDefinition").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ColumnDefinition(::Windows::UI::Xaml::Controls::ColumnDefinition^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ColumnDefinition^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinition^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ColumnDefinition^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ColumnDefinition();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ColumnDefinition *wrapperInstance = new ColumnDefinition(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinition^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ColumnDefinition^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ColumnDefinition^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapColumnDefinition(winRtInstance));
    }





    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinition^>(info.This())) {
        return;
      }

      ColumnDefinition *wrapper = ColumnDefinition::Unwrap<ColumnDefinition>(info.This());

      try  {
        ::Windows::UI::Xaml::GridLength result = wrapper->_instance->Width;
        info.GetReturnValue().Set(GridLengthToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsGridLengthJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinition^>(info.This())) {
        return;
      }

      ColumnDefinition *wrapper = ColumnDefinition::Unwrap<ColumnDefinition>(info.This());

      try {

        ::Windows::UI::Xaml::GridLength winRtValue = GridLengthFromJsObject(value);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinition^>(info.This())) {
        return;
      }

      ColumnDefinition *wrapper = ColumnDefinition::Unwrap<ColumnDefinition>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinition^>(info.This())) {
        return;
      }

      ColumnDefinition *wrapper = ColumnDefinition::Unwrap<ColumnDefinition>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinition^>(info.This())) {
        return;
      }

      ColumnDefinition *wrapper = ColumnDefinition::Unwrap<ColumnDefinition>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinition^>(info.This())) {
        return;
      }

      ColumnDefinition *wrapper = ColumnDefinition::Unwrap<ColumnDefinition>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ColumnDefinition^>(info.This())) {
        return;
      }

      ColumnDefinition *wrapper = ColumnDefinition::Unwrap<ColumnDefinition>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ColumnDefinition::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ColumnDefinition::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ColumnDefinition::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    private:
      ::Windows::UI::Xaml::Controls::ColumnDefinition^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapColumnDefinition(::Windows::UI::Xaml::Controls::ColumnDefinition^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ColumnDefinition^ UnwrapColumnDefinition(Local<Value> value);
  };

  Persistent<FunctionTemplate> ColumnDefinition::s_constructorTemplate;

  v8::Local<v8::Value> WrapColumnDefinition(::Windows::UI::Xaml::Controls::ColumnDefinition^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ColumnDefinition::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ColumnDefinition^ UnwrapColumnDefinition(Local<Value> value) {
     return ColumnDefinition::Unwrap<ColumnDefinition>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitColumnDefinition(Local<Object> exports) {
    ColumnDefinition::Init(exports);
  }

  class RowDefinition : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("RowDefinition").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);


        Nan::Set(exports, Nan::New<String>("RowDefinition").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      RowDefinition(::Windows::UI::Xaml::Controls::RowDefinition^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::RowDefinition^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinition^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::RowDefinition^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::RowDefinition();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      RowDefinition *wrapperInstance = new RowDefinition(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinition^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::RowDefinition^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::RowDefinition^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapRowDefinition(winRtInstance));
    }





    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinition^>(info.This())) {
        return;
      }

      RowDefinition *wrapper = RowDefinition::Unwrap<RowDefinition>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinition^>(info.This())) {
        return;
      }

      RowDefinition *wrapper = RowDefinition::Unwrap<RowDefinition>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinition^>(info.This())) {
        return;
      }

      RowDefinition *wrapper = RowDefinition::Unwrap<RowDefinition>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinition^>(info.This())) {
        return;
      }

      RowDefinition *wrapper = RowDefinition::Unwrap<RowDefinition>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinition^>(info.This())) {
        return;
      }

      RowDefinition *wrapper = RowDefinition::Unwrap<RowDefinition>(info.This());

      try  {
        ::Windows::UI::Xaml::GridLength result = wrapper->_instance->Height;
        info.GetReturnValue().Set(GridLengthToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsGridLengthJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinition^>(info.This())) {
        return;
      }

      RowDefinition *wrapper = RowDefinition::Unwrap<RowDefinition>(info.This());

      try {

        ::Windows::UI::Xaml::GridLength winRtValue = GridLengthFromJsObject(value);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RowDefinition^>(info.This())) {
        return;
      }

      RowDefinition *wrapper = RowDefinition::Unwrap<RowDefinition>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RowDefinition::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RowDefinition::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RowDefinition::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    private:
      ::Windows::UI::Xaml::Controls::RowDefinition^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapRowDefinition(::Windows::UI::Xaml::Controls::RowDefinition^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::RowDefinition^ UnwrapRowDefinition(Local<Value> value);
  };

  Persistent<FunctionTemplate> RowDefinition::s_constructorTemplate;

  v8::Local<v8::Value> WrapRowDefinition(::Windows::UI::Xaml::Controls::RowDefinition^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(RowDefinition::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::RowDefinition^ UnwrapRowDefinition(Local<Value> value) {
     return RowDefinition::Unwrap<RowDefinition>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitRowDefinition(Local<Object> exports) {
    RowDefinition::Init(exports);
  }

  class AutoSuggestBoxQuerySubmittedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("AutoSuggestBoxQuerySubmittedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("chosenSuggestion").ToLocalChecked(), ChosenSuggestionGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("queryText").ToLocalChecked(), QueryTextGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("AutoSuggestBoxQuerySubmittedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      AutoSuggestBoxQuerySubmittedEventArgs(::Windows::UI::Xaml::Controls::AutoSuggestBoxQuerySubmittedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::AutoSuggestBoxQuerySubmittedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBoxQuerySubmittedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::AutoSuggestBoxQuerySubmittedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::AutoSuggestBoxQuerySubmittedEventArgs();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      AutoSuggestBoxQuerySubmittedEventArgs *wrapperInstance = new AutoSuggestBoxQuerySubmittedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBoxQuerySubmittedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::AutoSuggestBoxQuerySubmittedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::AutoSuggestBoxQuerySubmittedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapAutoSuggestBoxQuerySubmittedEventArgs(winRtInstance));
    }





    static void ChosenSuggestionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBoxQuerySubmittedEventArgs^>(info.This())) {
        return;
      }

      AutoSuggestBoxQuerySubmittedEventArgs *wrapper = AutoSuggestBoxQuerySubmittedEventArgs::Unwrap<AutoSuggestBoxQuerySubmittedEventArgs>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->ChosenSuggestion;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void QueryTextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBoxQuerySubmittedEventArgs^>(info.This())) {
        return;
      }

      AutoSuggestBoxQuerySubmittedEventArgs *wrapper = AutoSuggestBoxQuerySubmittedEventArgs::Unwrap<AutoSuggestBoxQuerySubmittedEventArgs>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->QueryText;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::AutoSuggestBoxQuerySubmittedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapAutoSuggestBoxQuerySubmittedEventArgs(::Windows::UI::Xaml::Controls::AutoSuggestBoxQuerySubmittedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::AutoSuggestBoxQuerySubmittedEventArgs^ UnwrapAutoSuggestBoxQuerySubmittedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> AutoSuggestBoxQuerySubmittedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapAutoSuggestBoxQuerySubmittedEventArgs(::Windows::UI::Xaml::Controls::AutoSuggestBoxQuerySubmittedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(AutoSuggestBoxQuerySubmittedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::AutoSuggestBoxQuerySubmittedEventArgs^ UnwrapAutoSuggestBoxQuerySubmittedEventArgs(Local<Value> value) {
     return AutoSuggestBoxQuerySubmittedEventArgs::Unwrap<AutoSuggestBoxQuerySubmittedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitAutoSuggestBoxQuerySubmittedEventArgs(Local<Object> exports) {
    AutoSuggestBoxQuerySubmittedEventArgs::Init(exports);
  }

  class AutoSuggestBoxSuggestionChosenEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("AutoSuggestBoxSuggestionChosenEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedItem").ToLocalChecked(), SelectedItemGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("AutoSuggestBoxSuggestionChosenEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      AutoSuggestBoxSuggestionChosenEventArgs(::Windows::UI::Xaml::Controls::AutoSuggestBoxSuggestionChosenEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::AutoSuggestBoxSuggestionChosenEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBoxSuggestionChosenEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::AutoSuggestBoxSuggestionChosenEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::AutoSuggestBoxSuggestionChosenEventArgs();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      AutoSuggestBoxSuggestionChosenEventArgs *wrapperInstance = new AutoSuggestBoxSuggestionChosenEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBoxSuggestionChosenEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::AutoSuggestBoxSuggestionChosenEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::AutoSuggestBoxSuggestionChosenEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapAutoSuggestBoxSuggestionChosenEventArgs(winRtInstance));
    }





    static void SelectedItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBoxSuggestionChosenEventArgs^>(info.This())) {
        return;
      }

      AutoSuggestBoxSuggestionChosenEventArgs *wrapper = AutoSuggestBoxSuggestionChosenEventArgs::Unwrap<AutoSuggestBoxSuggestionChosenEventArgs>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->SelectedItem;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::AutoSuggestBoxSuggestionChosenEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapAutoSuggestBoxSuggestionChosenEventArgs(::Windows::UI::Xaml::Controls::AutoSuggestBoxSuggestionChosenEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::AutoSuggestBoxSuggestionChosenEventArgs^ UnwrapAutoSuggestBoxSuggestionChosenEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> AutoSuggestBoxSuggestionChosenEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapAutoSuggestBoxSuggestionChosenEventArgs(::Windows::UI::Xaml::Controls::AutoSuggestBoxSuggestionChosenEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(AutoSuggestBoxSuggestionChosenEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::AutoSuggestBoxSuggestionChosenEventArgs^ UnwrapAutoSuggestBoxSuggestionChosenEventArgs(Local<Value> value) {
     return AutoSuggestBoxSuggestionChosenEventArgs::Unwrap<AutoSuggestBoxSuggestionChosenEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitAutoSuggestBoxSuggestionChosenEventArgs(Local<Object> exports) {
    AutoSuggestBoxSuggestionChosenEventArgs::Init(exports);
  }

  class AutoSuggestBoxTextChangedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("AutoSuggestBoxTextChangedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "checkCurrent", CheckCurrent);
          



          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("reason").ToLocalChecked(), ReasonGetter, ReasonSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("reasonProperty").ToLocalChecked(), ReasonPropertyGetter);


        Nan::Set(exports, Nan::New<String>("AutoSuggestBoxTextChangedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      AutoSuggestBoxTextChangedEventArgs(::Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      AutoSuggestBoxTextChangedEventArgs *wrapperInstance = new AutoSuggestBoxTextChangedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapAutoSuggestBoxTextChangedEventArgs(winRtInstance));
    }


    static void CheckCurrent(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs^>(info.This())) {
        return;
      }

      AutoSuggestBoxTextChangedEventArgs *wrapper = AutoSuggestBoxTextChangedEventArgs::Unwrap<AutoSuggestBoxTextChangedEventArgs>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          bool result;
          result = wrapper->_instance->CheckCurrent();
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void ReasonGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs^>(info.This())) {
        return;
      }

      AutoSuggestBoxTextChangedEventArgs *wrapper = AutoSuggestBoxTextChangedEventArgs::Unwrap<AutoSuggestBoxTextChangedEventArgs>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::AutoSuggestionBoxTextChangeReason result = wrapper->_instance->Reason;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ReasonSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs^>(info.This())) {
        return;
      }

      AutoSuggestBoxTextChangedEventArgs *wrapper = AutoSuggestBoxTextChangedEventArgs::Unwrap<AutoSuggestBoxTextChangedEventArgs>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::AutoSuggestionBoxTextChangeReason winRtValue = static_cast<::Windows::UI::Xaml::Controls::AutoSuggestionBoxTextChangeReason>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Reason = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ReasonPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs::ReasonProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    private:
      ::Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapAutoSuggestBoxTextChangedEventArgs(::Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs^ UnwrapAutoSuggestBoxTextChangedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> AutoSuggestBoxTextChangedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapAutoSuggestBoxTextChangedEventArgs(::Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(AutoSuggestBoxTextChangedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs^ UnwrapAutoSuggestBoxTextChangedEventArgs(Local<Value> value) {
     return AutoSuggestBoxTextChangedEventArgs::Unwrap<AutoSuggestBoxTextChangedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitAutoSuggestBoxTextChangedEventArgs(Local<Object> exports) {
    AutoSuggestBoxTextChangedEventArgs::Init(exports);
  }

  class CleanUpVirtualizedItemEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("CleanUpVirtualizedItemEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cancel").ToLocalChecked(), CancelGetter, CancelSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("uIElement").ToLocalChecked(), UIElementGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("value").ToLocalChecked(), ValueGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("originalSource").ToLocalChecked(), OriginalSourceGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("CleanUpVirtualizedItemEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      CleanUpVirtualizedItemEventArgs(::Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      CleanUpVirtualizedItemEventArgs *wrapperInstance = new CleanUpVirtualizedItemEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapCleanUpVirtualizedItemEventArgs(winRtInstance));
    }





    static void CancelGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventArgs^>(info.This())) {
        return;
      }

      CleanUpVirtualizedItemEventArgs *wrapper = CleanUpVirtualizedItemEventArgs::Unwrap<CleanUpVirtualizedItemEventArgs>(info.This());

      try  {
        bool result = wrapper->_instance->Cancel;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CancelSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventArgs^>(info.This())) {
        return;
      }

      CleanUpVirtualizedItemEventArgs *wrapper = CleanUpVirtualizedItemEventArgs::Unwrap<CleanUpVirtualizedItemEventArgs>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->Cancel = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UIElementGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventArgs^>(info.This())) {
        return;
      }

      CleanUpVirtualizedItemEventArgs *wrapper = CleanUpVirtualizedItemEventArgs::Unwrap<CleanUpVirtualizedItemEventArgs>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->UIElement;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ValueGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventArgs^>(info.This())) {
        return;
      }

      CleanUpVirtualizedItemEventArgs *wrapper = CleanUpVirtualizedItemEventArgs::Unwrap<CleanUpVirtualizedItemEventArgs>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Value;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OriginalSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::RoutedEventArgs^>(info.This())) {
        return;
      }

      RoutedEventArgs *wrapper = RoutedEventArgs::Unwrap<RoutedEventArgs>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->OriginalSource;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapCleanUpVirtualizedItemEventArgs(::Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventArgs^ UnwrapCleanUpVirtualizedItemEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> CleanUpVirtualizedItemEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapCleanUpVirtualizedItemEventArgs(::Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(CleanUpVirtualizedItemEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventArgs^ UnwrapCleanUpVirtualizedItemEventArgs(Local<Value> value) {
     return CleanUpVirtualizedItemEventArgs::Unwrap<CleanUpVirtualizedItemEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitCleanUpVirtualizedItemEventArgs(Local<Object> exports) {
    CleanUpVirtualizedItemEventArgs::Init(exports);
  }

  class ContextMenuEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ContextMenuEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("handled").ToLocalChecked(), HandledGetter, HandledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cursorLeft").ToLocalChecked(), CursorLeftGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cursorTop").ToLocalChecked(), CursorTopGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("originalSource").ToLocalChecked(), OriginalSourceGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("ContextMenuEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ContextMenuEventArgs(::Windows::UI::Xaml::Controls::ContextMenuEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ContextMenuEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContextMenuEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ContextMenuEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ContextMenuEventArgs *wrapperInstance = new ContextMenuEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContextMenuEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ContextMenuEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ContextMenuEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapContextMenuEventArgs(winRtInstance));
    }





    static void HandledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContextMenuEventArgs^>(info.This())) {
        return;
      }

      ContextMenuEventArgs *wrapper = ContextMenuEventArgs::Unwrap<ContextMenuEventArgs>(info.This());

      try  {
        bool result = wrapper->_instance->Handled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HandledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContextMenuEventArgs^>(info.This())) {
        return;
      }

      ContextMenuEventArgs *wrapper = ContextMenuEventArgs::Unwrap<ContextMenuEventArgs>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->Handled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CursorLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContextMenuEventArgs^>(info.This())) {
        return;
      }

      ContextMenuEventArgs *wrapper = ContextMenuEventArgs::Unwrap<ContextMenuEventArgs>(info.This());

      try  {
        double result = wrapper->_instance->CursorLeft;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CursorTopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContextMenuEventArgs^>(info.This())) {
        return;
      }

      ContextMenuEventArgs *wrapper = ContextMenuEventArgs::Unwrap<ContextMenuEventArgs>(info.This());

      try  {
        double result = wrapper->_instance->CursorTop;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OriginalSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::RoutedEventArgs^>(info.This())) {
        return;
      }

      RoutedEventArgs *wrapper = RoutedEventArgs::Unwrap<RoutedEventArgs>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->OriginalSource;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::ContextMenuEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapContextMenuEventArgs(::Windows::UI::Xaml::Controls::ContextMenuEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ContextMenuEventArgs^ UnwrapContextMenuEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> ContextMenuEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapContextMenuEventArgs(::Windows::UI::Xaml::Controls::ContextMenuEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ContextMenuEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ContextMenuEventArgs^ UnwrapContextMenuEventArgs(Local<Value> value) {
     return ContextMenuEventArgs::Unwrap<ContextMenuEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitContextMenuEventArgs(Local<Object> exports) {
    ContextMenuEventArgs::Init(exports);
  }

  class ItemClickEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ItemClickEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clickedItem").ToLocalChecked(), ClickedItemGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("originalSource").ToLocalChecked(), OriginalSourceGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("ItemClickEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ItemClickEventArgs(::Windows::UI::Xaml::Controls::ItemClickEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ItemClickEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemClickEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ItemClickEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ItemClickEventArgs();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ItemClickEventArgs *wrapperInstance = new ItemClickEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemClickEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ItemClickEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ItemClickEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapItemClickEventArgs(winRtInstance));
    }





    static void ClickedItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemClickEventArgs^>(info.This())) {
        return;
      }

      ItemClickEventArgs *wrapper = ItemClickEventArgs::Unwrap<ItemClickEventArgs>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->ClickedItem;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OriginalSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::RoutedEventArgs^>(info.This())) {
        return;
      }

      RoutedEventArgs *wrapper = RoutedEventArgs::Unwrap<RoutedEventArgs>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->OriginalSource;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::ItemClickEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapItemClickEventArgs(::Windows::UI::Xaml::Controls::ItemClickEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ItemClickEventArgs^ UnwrapItemClickEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> ItemClickEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapItemClickEventArgs(::Windows::UI::Xaml::Controls::ItemClickEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ItemClickEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ItemClickEventArgs^ UnwrapItemClickEventArgs(Local<Value> value) {
     return ItemClickEventArgs::Unwrap<ItemClickEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitItemClickEventArgs(Local<Object> exports) {
    ItemClickEventArgs::Init(exports);
  }

  class SelectionChangedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("SelectionChangedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("addedItems").ToLocalChecked(), AddedItemsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("removedItems").ToLocalChecked(), RemovedItemsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("originalSource").ToLocalChecked(), OriginalSourceGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("SelectionChangedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      SelectionChangedEventArgs(::Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SelectionChangedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::SelectionChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 2
        && (NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Collections::IVector<::Platform::Object^>^>(info[0]) || info[0]->IsArray())
        && (NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Collections::IVector<::Platform::Object^>^>(info[1]) || info[1]->IsArray()))
      {
        try {
          ::Windows::Foundation::Collections::IVector<::Platform::Object^>^ arg0 = 
            [] (v8::Local<v8::Value> value) -> ::Windows::Foundation::Collections::IVector<::Platform::Object^>^
            {
              if (value->IsArray())
              {
                return NodeRT::Collections::JsArrayToWinrtVector<::Platform::Object^>(value.As<Array>(), 
                 [](Local<Value> value) -> bool {
                   return NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value);
                 },
                 [](Local<Value> value) -> ::Platform::Object^ {
                   return dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));
                 }
                );
              }
              else
              {
                return dynamic_cast<::Windows::Foundation::Collections::IVector<::Platform::Object^>^>(NodeRT::Utils::GetObjectInstance(value));
              }
            } (info[0]);
          ::Windows::Foundation::Collections::IVector<::Platform::Object^>^ arg1 = 
            [] (v8::Local<v8::Value> value) -> ::Windows::Foundation::Collections::IVector<::Platform::Object^>^
            {
              if (value->IsArray())
              {
                return NodeRT::Collections::JsArrayToWinrtVector<::Platform::Object^>(value.As<Array>(), 
                 [](Local<Value> value) -> bool {
                   return NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value);
                 },
                 [](Local<Value> value) -> ::Platform::Object^ {
                   return dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));
                 }
                );
              }
              else
              {
                return dynamic_cast<::Windows::Foundation::Collections::IVector<::Platform::Object^>^>(NodeRT::Utils::GetObjectInstance(value));
              }
            } (info[1]);
          
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::SelectionChangedEventArgs(arg0,arg1);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      SelectionChangedEventArgs *wrapperInstance = new SelectionChangedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SelectionChangedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::SelectionChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapSelectionChangedEventArgs(winRtInstance));
    }





    static void AddedItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SelectionChangedEventArgs^>(info.This())) {
        return;
      }

      SelectionChangedEventArgs *wrapper = SelectionChangedEventArgs::Unwrap<SelectionChangedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Platform::Object^>^ result = wrapper->_instance->AddedItems;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Platform::Object^>::CreateVectorWrapper(result, 
            [](::Platform::Object^ val) -> Local<Value> {
              return CreateOpaqueWrapper(val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value);
            },
            [](Local<Value> value) -> ::Platform::Object^ {
              return dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RemovedItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SelectionChangedEventArgs^>(info.This())) {
        return;
      }

      SelectionChangedEventArgs *wrapper = SelectionChangedEventArgs::Unwrap<SelectionChangedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Platform::Object^>^ result = wrapper->_instance->RemovedItems;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Platform::Object^>::CreateVectorWrapper(result, 
            [](::Platform::Object^ val) -> Local<Value> {
              return CreateOpaqueWrapper(val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value);
            },
            [](Local<Value> value) -> ::Platform::Object^ {
              return dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OriginalSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::RoutedEventArgs^>(info.This())) {
        return;
      }

      RoutedEventArgs *wrapper = RoutedEventArgs::Unwrap<RoutedEventArgs>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->OriginalSource;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapSelectionChangedEventArgs(::Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ UnwrapSelectionChangedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> SelectionChangedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapSelectionChangedEventArgs(::Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(SelectionChangedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ UnwrapSelectionChangedEventArgs(Local<Value> value) {
     return SelectionChangedEventArgs::Unwrap<SelectionChangedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitSelectionChangedEventArgs(Local<Object> exports) {
    SelectionChangedEventArgs::Init(exports);
  }

  class TextChangedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("TextChangedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("originalSource").ToLocalChecked(), OriginalSourceGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("TextChangedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      TextChangedEventArgs(::Windows::UI::Xaml::Controls::TextChangedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::TextChangedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextChangedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::TextChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      TextChangedEventArgs *wrapperInstance = new TextChangedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextChangedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::TextChangedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::TextChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapTextChangedEventArgs(winRtInstance));
    }





    static void OriginalSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::RoutedEventArgs^>(info.This())) {
        return;
      }

      RoutedEventArgs *wrapper = RoutedEventArgs::Unwrap<RoutedEventArgs>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->OriginalSource;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::TextChangedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapTextChangedEventArgs(::Windows::UI::Xaml::Controls::TextChangedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::TextChangedEventArgs^ UnwrapTextChangedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> TextChangedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapTextChangedEventArgs(::Windows::UI::Xaml::Controls::TextChangedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(TextChangedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::TextChangedEventArgs^ UnwrapTextChangedEventArgs(Local<Value> value) {
     return TextChangedEventArgs::Unwrap<TextChangedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitTextChangedEventArgs(Local<Object> exports) {
    TextChangedEventArgs::Init(exports);
  }

  class ItemsPanelTemplate : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ItemsPanelTemplate").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("ItemsPanelTemplate").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ItemsPanelTemplate(::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ItemsPanelTemplate^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ItemsPanelTemplate();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ItemsPanelTemplate *wrapperInstance = new ItemsPanelTemplate(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ItemsPanelTemplate^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapItemsPanelTemplate(winRtInstance));
    }





    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapItemsPanelTemplate(::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ UnwrapItemsPanelTemplate(Local<Value> value);
  };

  Persistent<FunctionTemplate> ItemsPanelTemplate::s_constructorTemplate;

  v8::Local<v8::Value> WrapItemsPanelTemplate(::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ItemsPanelTemplate::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ UnwrapItemsPanelTemplate(Local<Value> value) {
     return ItemsPanelTemplate::Unwrap<ItemsPanelTemplate>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitItemsPanelTemplate(Local<Object> exports) {
    ItemsPanelTemplate::Init(exports);
  }

  class Panel : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("Panel").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("childrenTransitions").ToLocalChecked(), ChildrenTransitionsGetter, ChildrenTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("children").ToLocalChecked(), ChildrenGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isItemsHost").ToLocalChecked(), IsItemsHostGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("childrenTransitionsProperty").ToLocalChecked(), ChildrenTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isItemsHostProperty").ToLocalChecked(), IsItemsHostPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("Panel").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      Panel(::Windows::UI::Xaml::Controls::Panel^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::Panel^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::Panel^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      Panel *wrapperInstance = new Panel(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::Panel^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::Panel^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapPanel(winRtInstance));
    }





    static void ChildrenTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ChildrenTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ChildrenTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ChildrenTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildrenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::UIElementCollection^ result = wrapper->_instance->Children;
        info.GetReturnValue().Set(WrapUIElementCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsItemsHostGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        bool result = wrapper->_instance->IsItemsHost;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ChildrenTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::ChildrenTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsItemsHostPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::IsItemsHostProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Panel *wrapper = Panel::Unwrap<Panel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Panel *wrapper = Panel::Unwrap<Panel>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::Panel^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapPanel(::Windows::UI::Xaml::Controls::Panel^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::Panel^ UnwrapPanel(Local<Value> value);
  };

  Persistent<FunctionTemplate> Panel::s_constructorTemplate;

  v8::Local<v8::Value> WrapPanel(::Windows::UI::Xaml::Controls::Panel^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(Panel::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::Panel^ UnwrapPanel(Local<Value> value) {
     return Panel::Unwrap<Panel>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitPanel(Local<Object> exports) {
    Panel::Init(exports);
  }

  class Border : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("Border").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cornerRadius").ToLocalChecked(), CornerRadiusGetter, CornerRadiusSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("childTransitions").ToLocalChecked(), ChildTransitionsGetter, ChildTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("child").ToLocalChecked(), ChildGetter, ChildSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("childTransitionsProperty").ToLocalChecked(), ChildTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cornerRadiusProperty").ToLocalChecked(), CornerRadiusPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("Border").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      Border(::Windows::UI::Xaml::Controls::Border^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::Border^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::Border^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::Border();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      Border *wrapperInstance = new Border(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::Border^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::Border^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapBorder(winRtInstance));
    }





    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This())) {
        return;
      }

      Border *wrapper = Border::Unwrap<Border>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This())) {
        return;
      }

      Border *wrapper = Border::Unwrap<Border>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CornerRadiusGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This())) {
        return;
      }

      Border *wrapper = Border::Unwrap<Border>(info.This());

      try  {
        ::Windows::UI::Xaml::CornerRadius result = wrapper->_instance->CornerRadius;
        info.GetReturnValue().Set(CornerRadiusToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CornerRadiusSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsCornerRadiusJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This())) {
        return;
      }

      Border *wrapper = Border::Unwrap<Border>(info.This());

      try {

        ::Windows::UI::Xaml::CornerRadius winRtValue = CornerRadiusFromJsObject(value);

        wrapper->_instance->CornerRadius = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This())) {
        return;
      }

      Border *wrapper = Border::Unwrap<Border>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ChildTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ChildTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This())) {
        return;
      }

      Border *wrapper = Border::Unwrap<Border>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ChildTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This())) {
        return;
      }

      Border *wrapper = Border::Unwrap<Border>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->Child;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ChildSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This())) {
        return;
      }

      Border *wrapper = Border::Unwrap<Border>(info.This());

      try {

        ::Windows::UI::Xaml::UIElement^ winRtValue = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Child = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This())) {
        return;
      }

      Border *wrapper = Border::Unwrap<Border>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This())) {
        return;
      }

      Border *wrapper = Border::Unwrap<Border>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This())) {
        return;
      }

      Border *wrapper = Border::Unwrap<Border>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This())) {
        return;
      }

      Border *wrapper = Border::Unwrap<Border>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This())) {
        return;
      }

      Border *wrapper = Border::Unwrap<Border>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This())) {
        return;
      }

      Border *wrapper = Border::Unwrap<Border>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Border::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Border::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Border::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ChildTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Border::ChildTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CornerRadiusPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Border::CornerRadiusProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Border::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Border *wrapper = Border::Unwrap<Border>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Border^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Border *wrapper = Border::Unwrap<Border>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::Border^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapBorder(::Windows::UI::Xaml::Controls::Border^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::Border^ UnwrapBorder(Local<Value> value);
  };

  Persistent<FunctionTemplate> Border::s_constructorTemplate;

  v8::Local<v8::Value> WrapBorder(::Windows::UI::Xaml::Controls::Border^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(Border::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::Border^ UnwrapBorder(Local<Value> value) {
     return Border::Unwrap<Border>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitBorder(Local<Object> exports) {
    Border::Init(exports);
  }

  class CaptureElement : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("CaptureElement").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("stretch").ToLocalChecked(), StretchGetter, StretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("source").ToLocalChecked(), SourceGetter, SourceSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("sourceProperty").ToLocalChecked(), SourcePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("stretchProperty").ToLocalChecked(), StretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("CaptureElement").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      CaptureElement(::Windows::UI::Xaml::Controls::CaptureElement^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::CaptureElement^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::CaptureElement^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::CaptureElement();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      CaptureElement *wrapperInstance = new CaptureElement(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::CaptureElement^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::CaptureElement^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapCaptureElement(winRtInstance));
    }





    static void StretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This())) {
        return;
      }

      CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Stretch result = wrapper->_instance->Stretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This())) {
        return;
      }

      CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Stretch winRtValue = static_cast<::Windows::UI::Xaml::Media::Stretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Stretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This())) {
        return;
      }

      CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());

      try  {
        ::Windows::Media::Capture::MediaCapture^ result = wrapper->_instance->Source;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Media.Capture", "MediaCapture", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SourceSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Media::Capture::MediaCapture^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This())) {
        return;
      }

      CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());

      try {

        ::Windows::Media::Capture::MediaCapture^ winRtValue = dynamic_cast<::Windows::Media::Capture::MediaCapture^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Source = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void SourcePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CaptureElement::SourceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CaptureElement::StretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CaptureElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CaptureElement *wrapper = CaptureElement::Unwrap<CaptureElement>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::CaptureElement^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapCaptureElement(::Windows::UI::Xaml::Controls::CaptureElement^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::CaptureElement^ UnwrapCaptureElement(Local<Value> value);
  };

  Persistent<FunctionTemplate> CaptureElement::s_constructorTemplate;

  v8::Local<v8::Value> WrapCaptureElement(::Windows::UI::Xaml::Controls::CaptureElement^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(CaptureElement::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::CaptureElement^ UnwrapCaptureElement(Local<Value> value) {
     return CaptureElement::Unwrap<CaptureElement>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitCaptureElement(Local<Object> exports) {
    CaptureElement::Init(exports);
  }

  class ContentPresenter : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ContentPresenter").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "onContentTemplateChanged", OnContentTemplateChanged);
            Nan::SetPrototypeMethod(localRef, "onContentTemplateSelectorChanged", OnContentTemplateSelectorChanged);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opticalMarginAlignment").ToLocalChecked(), OpticalMarginAlignmentGetter, OpticalMarginAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textLineBounds").ToLocalChecked(), TextLineBoundsGetter, TextLineBoundsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cornerRadius").ToLocalChecked(), CornerRadiusGetter, CornerRadiusSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textWrapping").ToLocalChecked(), TextWrappingGetter, TextWrappingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxLines").ToLocalChecked(), MaxLinesGetter, MaxLinesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lineStackingStrategy").ToLocalChecked(), LineStackingStrategyGetter, LineStackingStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lineHeight").ToLocalChecked(), LineHeightGetter, LineHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opticalMarginAlignmentProperty").ToLocalChecked(), OpticalMarginAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textLineBoundsProperty").ToLocalChecked(), TextLineBoundsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textWrappingProperty").ToLocalChecked(), TextWrappingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxLinesProperty").ToLocalChecked(), MaxLinesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lineStackingStrategyProperty").ToLocalChecked(), LineStackingStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lineHeightProperty").ToLocalChecked(), LineHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cornerRadiusProperty").ToLocalChecked(), CornerRadiusPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ContentPresenter").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ContentPresenter(::Windows::UI::Xaml::Controls::ContentPresenter^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ContentPresenter^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ContentPresenter^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ContentPresenter();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ContentPresenter *wrapperInstance = new ContentPresenter(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ContentPresenter^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ContentPresenter^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapContentPresenter(winRtInstance));
    }


    static void OnContentTemplateChanged(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::DataTemplate^ arg0 = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::UI::Xaml::DataTemplate^ arg1 = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          wrapper->_instance->OnContentTemplateChanged(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnContentTemplateSelectorChanged(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::DataTemplateSelector^ arg0 = UnwrapDataTemplateSelector(info[0]);
          ::Windows::UI::Xaml::Controls::DataTemplateSelector^ arg1 = UnwrapDataTemplateSelector(info[1]);
          
          wrapper->_instance->OnContentTemplateSelectorChanged(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpticalMarginAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::OpticalMarginAlignment result = wrapper->_instance->OpticalMarginAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpticalMarginAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::OpticalMarginAlignment winRtValue = static_cast<::Windows::UI::Xaml::OpticalMarginAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->OpticalMarginAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextLineBoundsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::TextLineBounds result = wrapper->_instance->TextLineBounds;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextLineBoundsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::TextLineBounds winRtValue = static_cast<::Windows::UI::Xaml::TextLineBounds>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TextLineBounds = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CornerRadiusGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::CornerRadius result = wrapper->_instance->CornerRadius;
        info.GetReturnValue().Set(CornerRadiusToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CornerRadiusSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsCornerRadiusJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::CornerRadius winRtValue = CornerRadiusFromJsObject(value);

        wrapper->_instance->CornerRadius = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextWrappingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::TextWrapping result = wrapper->_instance->TextWrapping;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextWrappingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::TextWrapping winRtValue = static_cast<::Windows::UI::Xaml::TextWrapping>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TextWrapping = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxLinesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        int result = wrapper->_instance->MaxLines;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxLinesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->MaxLines = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LineStackingStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::LineStackingStrategy result = wrapper->_instance->LineStackingStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LineStackingStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::LineStackingStrategy winRtValue = static_cast<::Windows::UI::Xaml::LineStackingStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->LineStackingStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LineHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        double result = wrapper->_instance->LineHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LineHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->LineHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpticalMarginAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::OpticalMarginAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextLineBoundsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::TextLineBoundsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextWrappingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::TextWrappingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxLinesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::MaxLinesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LineStackingStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::LineStackingStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LineHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::LineHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CornerRadiusPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::CornerRadiusProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ContentPresenter^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapContentPresenter(::Windows::UI::Xaml::Controls::ContentPresenter^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ContentPresenter^ UnwrapContentPresenter(Local<Value> value);
  };

  Persistent<FunctionTemplate> ContentPresenter::s_constructorTemplate;

  v8::Local<v8::Value> WrapContentPresenter(::Windows::UI::Xaml::Controls::ContentPresenter^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ContentPresenter::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ContentPresenter^ UnwrapContentPresenter(Local<Value> value) {
     return ContentPresenter::Unwrap<ContentPresenter>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitContentPresenter(Local<Object> exports) {
    ContentPresenter::Init(exports);
  }

  class Image : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("Image").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "getAsCastingSource", GetAsCastingSource);
            Nan::SetPrototypeMethod(localRef, "getAlphaMask", GetAlphaMask);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("stretch").ToLocalChecked(), StretchGetter, StretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("source").ToLocalChecked(), SourceGetter, SourceSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("nineGrid").ToLocalChecked(), NineGridGetter, NineGridSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("playToSource").ToLocalChecked(), PlayToSourceGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("nineGridProperty").ToLocalChecked(), NineGridPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("playToSourceProperty").ToLocalChecked(), PlayToSourcePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("sourceProperty").ToLocalChecked(), SourcePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("stretchProperty").ToLocalChecked(), StretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("Image").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      Image(::Windows::UI::Xaml::Controls::Image^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::Image^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::Image^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::Image();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      Image *wrapperInstance = new Image(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::Image^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::Image^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapImage(winRtInstance));
    }


    static void GetAsCastingSource(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This())) {
        return;
      }

      Image *wrapper = Image::Unwrap<Image>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          ::Windows::Media::Casting::CastingSource^ result;
          result = wrapper->_instance->GetAsCastingSource();
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Media.Casting", "CastingSource", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetAlphaMask(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This())) {
        return;
      }

      Image *wrapper = Image::Unwrap<Image>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          ::Windows::UI::Composition::CompositionBrush^ result;
          result = wrapper->_instance->GetAlphaMask();
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Composition", "CompositionBrush", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void StretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This())) {
        return;
      }

      Image *wrapper = Image::Unwrap<Image>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Stretch result = wrapper->_instance->Stretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This())) {
        return;
      }

      Image *wrapper = Image::Unwrap<Image>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Stretch winRtValue = static_cast<::Windows::UI::Xaml::Media::Stretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Stretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This())) {
        return;
      }

      Image *wrapper = Image::Unwrap<Image>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ImageSource^ result = wrapper->_instance->Source;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "ImageSource", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SourceSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::ImageSource^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This())) {
        return;
      }

      Image *wrapper = Image::Unwrap<Image>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ImageSource^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::ImageSource^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Source = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NineGridGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This())) {
        return;
      }

      Image *wrapper = Image::Unwrap<Image>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->NineGrid;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NineGridSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This())) {
        return;
      }

      Image *wrapper = Image::Unwrap<Image>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->NineGrid = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PlayToSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This())) {
        return;
      }

      Image *wrapper = Image::Unwrap<Image>(info.This());

      try  {
        ::Windows::Media::PlayTo::PlayToSource^ result = wrapper->_instance->PlayToSource;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Media.PlayTo", "PlayToSource", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void NineGridPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Image::NineGridProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PlayToSourcePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Image::PlayToSourceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SourcePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Image::SourceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Image::StretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"imageFailed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ImageFailed::add(
            ref new ::Windows::UI::Xaml::ExceptionRoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::ExceptionRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ExceptionRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"imageOpened", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ImageOpened::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Image *wrapper = Image::Unwrap<Image>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"imageFailed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"imageOpened", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"imageFailed", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->ImageFailed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"imageOpened", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->ImageOpened::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Image^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Image *wrapper = Image::Unwrap<Image>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::Image^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapImage(::Windows::UI::Xaml::Controls::Image^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::Image^ UnwrapImage(Local<Value> value);
  };

  Persistent<FunctionTemplate> Image::s_constructorTemplate;

  v8::Local<v8::Value> WrapImage(::Windows::UI::Xaml::Controls::Image^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(Image::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::Image^ UnwrapImage(Local<Value> value) {
     return Image::Unwrap<Image>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitImage(Local<Object> exports) {
    Image::Init(exports);
  }

  class ItemsPresenter : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ItemsPresenter").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "getIrregularSnapPoints", GetIrregularSnapPoints);
            Nan::SetPrototypeMethod(localRef, "getRegularSnapPoints", GetRegularSnapPoints);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerTransitions").ToLocalChecked(), HeaderTransitionsGetter, HeaderTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerTemplate").ToLocalChecked(), HeaderTemplateGetter, HeaderTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("header").ToLocalChecked(), HeaderGetter, HeaderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("footerTransitions").ToLocalChecked(), FooterTransitionsGetter, FooterTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("footerTemplate").ToLocalChecked(), FooterTemplateGetter, FooterTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("footer").ToLocalChecked(), FooterGetter, FooterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("areHorizontalSnapPointsRegular").ToLocalChecked(), AreHorizontalSnapPointsRegularGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("areVerticalSnapPointsRegular").ToLocalChecked(), AreVerticalSnapPointsRegularGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("headerProperty").ToLocalChecked(), HeaderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerTemplateProperty").ToLocalChecked(), HeaderTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerTransitionsProperty").ToLocalChecked(), HeaderTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("footerProperty").ToLocalChecked(), FooterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("footerTemplateProperty").ToLocalChecked(), FooterTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("footerTransitionsProperty").ToLocalChecked(), FooterTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ItemsPresenter").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ItemsPresenter(::Windows::UI::Xaml::Controls::ItemsPresenter^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ItemsPresenter^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ItemsPresenter^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ItemsPresenter();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ItemsPresenter *wrapperInstance = new ItemsPresenter(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ItemsPresenter^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ItemsPresenter^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapItemsPresenter(winRtInstance));
    }


    static void GetIrregularSnapPoints(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This())) {
        return;
      }

      ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());

      if (info.Length() == 2
        && info[0]->IsInt32()
        && info[1]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::Controls::Orientation arg0 = static_cast<::Windows::UI::Xaml::Controls::Orientation>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          ::Windows::UI::Xaml::Controls::Primitives::SnapPointsAlignment arg1 = static_cast<::Windows::UI::Xaml::Controls::Primitives::SnapPointsAlignment>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          ::Windows::Foundation::Collections::IVectorView<float>^ result;
          result = wrapper->_instance->GetIrregularSnapPoints(arg0, arg1);
          info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<float>::CreateVectorViewWrapper(result, 
            [](float val) -> Local<Value> {
              return Nan::New<Number>(static_cast<double>(val));
            },
            [](Local<Value> value) -> bool {
              return value->IsNumber();
            },
            [](Local<Value> value) -> float {
              return static_cast<float>(Nan::To<double>(value).FromMaybe(0.0));
            }
          ));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetRegularSnapPoints(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This())) {
        return;
      }

      ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());

      if (info.Length() == 2
        && info[0]->IsInt32()
        && info[1]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::Controls::Orientation arg0 = static_cast<::Windows::UI::Xaml::Controls::Orientation>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          ::Windows::UI::Xaml::Controls::Primitives::SnapPointsAlignment arg1 = static_cast<::Windows::UI::Xaml::Controls::Primitives::SnapPointsAlignment>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          float arg2;
          
          float result;
          result = wrapper->_instance->GetRegularSnapPoints(arg0, arg1, &arg2);
          Local<Object> resObj = Nan::New<Object>();
          Nan::Set(resObj, Nan::New<String>("number").ToLocalChecked(), Nan::New<Number>(static_cast<double>(result)));
          Nan::Set(resObj, Nan::New<String>("offset").ToLocalChecked(), Nan::New<Number>(static_cast<double>(arg2)));
          info.GetReturnValue().Set(resObj);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This())) {
        return;
      }

      ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This())) {
        return;
      }

      ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This())) {
        return;
      }

      ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->HeaderTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This())) {
        return;
      }

      ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This())) {
        return;
      }

      ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->HeaderTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This())) {
        return;
      }

      ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This())) {
        return;
      }

      ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Header;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This())) {
        return;
      }

      ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Header = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FooterTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This())) {
        return;
      }

      ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->FooterTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FooterTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This())) {
        return;
      }

      ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FooterTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FooterTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This())) {
        return;
      }

      ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->FooterTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FooterTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This())) {
        return;
      }

      ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FooterTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FooterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This())) {
        return;
      }

      ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Footer;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FooterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This())) {
        return;
      }

      ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Footer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AreHorizontalSnapPointsRegularGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This())) {
        return;
      }

      ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());

      try  {
        bool result = wrapper->_instance->AreHorizontalSnapPointsRegular;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AreVerticalSnapPointsRegularGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This())) {
        return;
      }

      ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());

      try  {
        bool result = wrapper->_instance->AreVerticalSnapPointsRegular;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void HeaderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsPresenter::HeaderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsPresenter::HeaderTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsPresenter::HeaderTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsPresenter::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FooterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsPresenter::FooterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FooterTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsPresenter::FooterTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FooterTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsPresenter::FooterTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"horizontalSnapPointsChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->HorizontalSnapPointsChanged::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"verticalSnapPointsChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->VerticalSnapPointsChanged::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"horizontalSnapPointsChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"verticalSnapPointsChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"horizontalSnapPointsChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->HorizontalSnapPointsChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"verticalSnapPointsChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->VerticalSnapPointsChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsPresenter *wrapper = ItemsPresenter::Unwrap<ItemsPresenter>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ItemsPresenter^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapItemsPresenter(::Windows::UI::Xaml::Controls::ItemsPresenter^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ItemsPresenter^ UnwrapItemsPresenter(Local<Value> value);
  };

  Persistent<FunctionTemplate> ItemsPresenter::s_constructorTemplate;

  v8::Local<v8::Value> WrapItemsPresenter(::Windows::UI::Xaml::Controls::ItemsPresenter^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ItemsPresenter::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ItemsPresenter^ UnwrapItemsPresenter(Local<Value> value) {
     return ItemsPresenter::Unwrap<ItemsPresenter>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitItemsPresenter(Local<Object> exports) {
    ItemsPresenter::Init(exports);
  }

  class RichTextBlockOverflow : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("RichTextBlockOverflow").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "getPositionFromPoint", GetPositionFromPoint);
            Nan::SetPrototypeMethod(localRef, "focus", Focus);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("overflowContentTarget").ToLocalChecked(), OverflowContentTargetGetter, OverflowContentTargetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baselineOffset").ToLocalChecked(), BaselineOffsetGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentEnd").ToLocalChecked(), ContentEndGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentSource").ToLocalChecked(), ContentSourceGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentStart").ToLocalChecked(), ContentStartGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("hasOverflowContent").ToLocalChecked(), HasOverflowContentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxLines").ToLocalChecked(), MaxLinesGetter, MaxLinesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("hasOverflowContentProperty").ToLocalChecked(), HasOverflowContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("overflowContentTargetProperty").ToLocalChecked(), OverflowContentTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxLinesProperty").ToLocalChecked(), MaxLinesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("RichTextBlockOverflow").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      RichTextBlockOverflow(::Windows::UI::Xaml::Controls::RichTextBlockOverflow^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::RichTextBlockOverflow^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::RichTextBlockOverflow^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::RichTextBlockOverflow();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      RichTextBlockOverflow *wrapperInstance = new RichTextBlockOverflow(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::RichTextBlockOverflow^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::RichTextBlockOverflow^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapRichTextBlockOverflow(winRtInstance));
    }


    static void GetPositionFromPoint(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This())) {
        return;
      }

      RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsPoint(info[0]))
      {
        try
        {
          ::Windows::Foundation::Point arg0 = NodeRT::Utils::PointFromJs(info[0]);
          
          ::Windows::UI::Xaml::Documents::TextPointer^ result;
          result = wrapper->_instance->GetPositionFromPoint(arg0);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Documents", "TextPointer", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Focus(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This())) {
        return;
      }

      RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());

      if (info.Length() == 1
        && info[0]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::FocusState arg0 = static_cast<::Windows::UI::Xaml::FocusState>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          
          bool result;
          result = wrapper->_instance->Focus(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This())) {
        return;
      }

      RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This())) {
        return;
      }

      RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OverflowContentTargetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This())) {
        return;
      }

      RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RichTextBlockOverflow^ result = wrapper->_instance->OverflowContentTarget;
        info.GetReturnValue().Set(WrapRichTextBlockOverflow(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OverflowContentTargetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This())) {
        return;
      }

      RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RichTextBlockOverflow^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->OverflowContentTarget = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaselineOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This())) {
        return;
      }

      RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());

      try  {
        double result = wrapper->_instance->BaselineOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentEndGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This())) {
        return;
      }

      RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());

      try  {
        ::Windows::UI::Xaml::Documents::TextPointer^ result = wrapper->_instance->ContentEnd;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Documents", "TextPointer", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This())) {
        return;
      }

      RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RichTextBlock^ result = wrapper->_instance->ContentSource;
        info.GetReturnValue().Set(WrapRichTextBlock(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentStartGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This())) {
        return;
      }

      RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());

      try  {
        ::Windows::UI::Xaml::Documents::TextPointer^ result = wrapper->_instance->ContentStart;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Documents", "TextPointer", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HasOverflowContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This())) {
        return;
      }

      RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());

      try  {
        bool result = wrapper->_instance->HasOverflowContent;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxLinesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This())) {
        return;
      }

      RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());

      try  {
        int result = wrapper->_instance->MaxLines;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxLinesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This())) {
        return;
      }

      RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->MaxLines = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void HasOverflowContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlockOverflow::HasOverflowContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OverflowContentTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlockOverflow::OverflowContentTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlockOverflow::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxLinesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlockOverflow::MaxLinesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlockOverflow *wrapper = RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::RichTextBlockOverflow^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapRichTextBlockOverflow(::Windows::UI::Xaml::Controls::RichTextBlockOverflow^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::RichTextBlockOverflow^ UnwrapRichTextBlockOverflow(Local<Value> value);
  };

  Persistent<FunctionTemplate> RichTextBlockOverflow::s_constructorTemplate;

  v8::Local<v8::Value> WrapRichTextBlockOverflow(::Windows::UI::Xaml::Controls::RichTextBlockOverflow^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(RichTextBlockOverflow::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::RichTextBlockOverflow^ UnwrapRichTextBlockOverflow(Local<Value> value) {
     return RichTextBlockOverflow::Unwrap<RichTextBlockOverflow>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitRichTextBlockOverflow(Local<Object> exports) {
    RichTextBlockOverflow::Init(exports);
  }

  class RichTextBlock : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("RichTextBlock").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "selectAll", SelectAll);
            Nan::SetPrototypeMethod(localRef, "select", Select);
            Nan::SetPrototypeMethod(localRef, "getPositionFromPoint", GetPositionFromPoint);
            Nan::SetPrototypeMethod(localRef, "focus", Focus);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lineStackingStrategy").ToLocalChecked(), LineStackingStrategyGetter, LineStackingStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lineHeight").ToLocalChecked(), LineHeightGetter, LineHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textAlignment").ToLocalChecked(), TextAlignmentGetter, TextAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textWrapping").ToLocalChecked(), TextWrappingGetter, TextWrappingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textTrimming").ToLocalChecked(), TextTrimmingGetter, TextTrimmingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textIndent").ToLocalChecked(), TextIndentGetter, TextIndentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextSelectionEnabled").ToLocalChecked(), IsTextSelectionEnabledGetter, IsTextSelectionEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("overflowContentTarget").ToLocalChecked(), OverflowContentTargetGetter, OverflowContentTargetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baselineOffset").ToLocalChecked(), BaselineOffsetGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedText").ToLocalChecked(), SelectedTextGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectionEnd").ToLocalChecked(), SelectionEndGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectionStart").ToLocalChecked(), SelectionStartGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("blocks").ToLocalChecked(), BlocksGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentEnd").ToLocalChecked(), ContentEndGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentStart").ToLocalChecked(), ContentStartGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("hasOverflowContent").ToLocalChecked(), HasOverflowContentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textReadingOrder").ToLocalChecked(), TextReadingOrderGetter, TextReadingOrderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textLineBounds").ToLocalChecked(), TextLineBoundsGetter, TextLineBoundsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectionHighlightColor").ToLocalChecked(), SelectionHighlightColorGetter, SelectionHighlightColorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opticalMarginAlignment").ToLocalChecked(), OpticalMarginAlignmentGetter, OpticalMarginAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxLines").ToLocalChecked(), MaxLinesGetter, MaxLinesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isColorFontEnabled").ToLocalChecked(), IsColorFontEnabledGetter, IsColorFontEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textDecorations").ToLocalChecked(), TextDecorationsGetter, TextDecorationsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("textIndentProperty").ToLocalChecked(), TextIndentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("hasOverflowContentProperty").ToLocalChecked(), HasOverflowContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextSelectionEnabledProperty").ToLocalChecked(), IsTextSelectionEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lineHeightProperty").ToLocalChecked(), LineHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lineStackingStrategyProperty").ToLocalChecked(), LineStackingStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("overflowContentTargetProperty").ToLocalChecked(), OverflowContentTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedTextProperty").ToLocalChecked(), SelectedTextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textAlignmentProperty").ToLocalChecked(), TextAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textTrimmingProperty").ToLocalChecked(), TextTrimmingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textWrappingProperty").ToLocalChecked(), TextWrappingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectionHighlightColorProperty").ToLocalChecked(), SelectionHighlightColorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isColorFontEnabledProperty").ToLocalChecked(), IsColorFontEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxLinesProperty").ToLocalChecked(), MaxLinesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opticalMarginAlignmentProperty").ToLocalChecked(), OpticalMarginAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textLineBoundsProperty").ToLocalChecked(), TextLineBoundsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textReadingOrderProperty").ToLocalChecked(), TextReadingOrderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textDecorationsProperty").ToLocalChecked(), TextDecorationsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("RichTextBlock").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      RichTextBlock(::Windows::UI::Xaml::Controls::RichTextBlock^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::RichTextBlock^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::RichTextBlock^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::RichTextBlock();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      RichTextBlock *wrapperInstance = new RichTextBlock(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::RichTextBlock^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::RichTextBlock^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapRichTextBlock(winRtInstance));
    }


    static void SelectAll(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->SelectAll();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Select(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Documents::TextPointer^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Documents::TextPointer^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::Documents::TextPointer^ arg0 = dynamic_cast<::Windows::UI::Xaml::Documents::TextPointer^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::UI::Xaml::Documents::TextPointer^ arg1 = dynamic_cast<::Windows::UI::Xaml::Documents::TextPointer^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          wrapper->_instance->Select(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetPositionFromPoint(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsPoint(info[0]))
      {
        try
        {
          ::Windows::Foundation::Point arg0 = NodeRT::Utils::PointFromJs(info[0]);
          
          ::Windows::UI::Xaml::Documents::TextPointer^ result;
          result = wrapper->_instance->GetPositionFromPoint(arg0);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Documents", "TextPointer", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Focus(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      if (info.Length() == 1
        && info[0]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::FocusState arg0 = static_cast<::Windows::UI::Xaml::FocusState>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          
          bool result;
          result = wrapper->_instance->Focus(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LineStackingStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::LineStackingStrategy result = wrapper->_instance->LineStackingStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LineStackingStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        ::Windows::UI::Xaml::LineStackingStrategy winRtValue = static_cast<::Windows::UI::Xaml::LineStackingStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->LineStackingStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LineHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        double result = wrapper->_instance->LineHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LineHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->LineHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::TextAlignment result = wrapper->_instance->TextAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        ::Windows::UI::Xaml::TextAlignment winRtValue = static_cast<::Windows::UI::Xaml::TextAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TextAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextWrappingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::TextWrapping result = wrapper->_instance->TextWrapping;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextWrappingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        ::Windows::UI::Xaml::TextWrapping winRtValue = static_cast<::Windows::UI::Xaml::TextWrapping>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TextWrapping = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextTrimmingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::TextTrimming result = wrapper->_instance->TextTrimming;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextTrimmingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        ::Windows::UI::Xaml::TextTrimming winRtValue = static_cast<::Windows::UI::Xaml::TextTrimming>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TextTrimming = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextIndentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        double result = wrapper->_instance->TextIndent;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextIndentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->TextIndent = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTextSelectionEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextSelectionEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextSelectionEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextSelectionEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OverflowContentTargetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RichTextBlockOverflow^ result = wrapper->_instance->OverflowContentTarget;
        info.GetReturnValue().Set(WrapRichTextBlockOverflow(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OverflowContentTargetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RichTextBlockOverflow^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::RichTextBlockOverflow^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->OverflowContentTarget = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaselineOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        double result = wrapper->_instance->BaselineOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedTextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->SelectedText;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectionEndGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::Documents::TextPointer^ result = wrapper->_instance->SelectionEnd;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Documents", "TextPointer", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectionStartGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::Documents::TextPointer^ result = wrapper->_instance->SelectionStart;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Documents", "TextPointer", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BlocksGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::Documents::BlockCollection^ result = wrapper->_instance->Blocks;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Documents", "BlockCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentEndGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::Documents::TextPointer^ result = wrapper->_instance->ContentEnd;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Documents", "TextPointer", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentStartGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::Documents::TextPointer^ result = wrapper->_instance->ContentStart;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Documents", "TextPointer", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HasOverflowContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        bool result = wrapper->_instance->HasOverflowContent;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextReadingOrderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::TextReadingOrder result = wrapper->_instance->TextReadingOrder;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextReadingOrderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        ::Windows::UI::Xaml::TextReadingOrder winRtValue = static_cast<::Windows::UI::Xaml::TextReadingOrder>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TextReadingOrder = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextLineBoundsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::TextLineBounds result = wrapper->_instance->TextLineBounds;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextLineBoundsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        ::Windows::UI::Xaml::TextLineBounds winRtValue = static_cast<::Windows::UI::Xaml::TextLineBounds>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TextLineBounds = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectionHighlightColorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::SolidColorBrush^ result = wrapper->_instance->SelectionHighlightColor;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "SolidColorBrush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectionHighlightColorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::SolidColorBrush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        ::Windows::UI::Xaml::Media::SolidColorBrush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::SolidColorBrush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectionHighlightColor = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpticalMarginAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::OpticalMarginAlignment result = wrapper->_instance->OpticalMarginAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpticalMarginAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        ::Windows::UI::Xaml::OpticalMarginAlignment winRtValue = static_cast<::Windows::UI::Xaml::OpticalMarginAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->OpticalMarginAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxLinesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        int result = wrapper->_instance->MaxLines;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxLinesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->MaxLines = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsColorFontEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        bool result = wrapper->_instance->IsColorFontEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsColorFontEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsColorFontEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextDecorationsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try  {
        ::Windows::UI::Text::TextDecorations result = wrapper->_instance->TextDecorations;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextDecorationsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This())) {
        return;
      }

      RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());

      try {

        ::Windows::UI::Text::TextDecorations winRtValue = static_cast<::Windows::UI::Text::TextDecorations>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TextDecorations = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void TextIndentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::TextIndentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HasOverflowContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::HasOverflowContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextSelectionEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::IsTextSelectionEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LineHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::LineHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LineStackingStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::LineStackingStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OverflowContentTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::OverflowContentTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedTextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::SelectedTextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::TextAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextTrimmingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::TextTrimmingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextWrappingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::TextWrappingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectionHighlightColorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::SelectionHighlightColorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsColorFontEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::IsColorFontEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxLinesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::MaxLinesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpticalMarginAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::OpticalMarginAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextLineBoundsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::TextLineBoundsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextReadingOrderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::TextReadingOrderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextDecorationsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichTextBlock::TextDecorationsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"contextMenuOpening", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextMenuOpening::add(
            ref new ::Windows::UI::Xaml::Controls::ContextMenuOpeningEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::ContextMenuEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapContextMenuEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SelectionChanged::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"contextMenuOpening", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"contextMenuOpening", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->ContextMenuOpening::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->SelectionChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichTextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichTextBlock *wrapper = RichTextBlock::Unwrap<RichTextBlock>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::RichTextBlock^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapRichTextBlock(::Windows::UI::Xaml::Controls::RichTextBlock^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::RichTextBlock^ UnwrapRichTextBlock(Local<Value> value);
  };

  Persistent<FunctionTemplate> RichTextBlock::s_constructorTemplate;

  v8::Local<v8::Value> WrapRichTextBlock(::Windows::UI::Xaml::Controls::RichTextBlock^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(RichTextBlock::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::RichTextBlock^ UnwrapRichTextBlock(Local<Value> value) {
     return RichTextBlock::Unwrap<RichTextBlock>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitRichTextBlock(Local<Object> exports) {
    RichTextBlock::Init(exports);
  }

  class TextBlock : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("TextBlock").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "getAlphaMask", GetAlphaMask);
            Nan::SetPrototypeMethod(localRef, "selectAll", SelectAll);
            Nan::SetPrototypeMethod(localRef, "select", Select);
            Nan::SetPrototypeMethod(localRef, "focus", Focus);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lineStackingStrategy").ToLocalChecked(), LineStackingStrategyGetter, LineStackingStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lineHeight").ToLocalChecked(), LineHeightGetter, LineHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textTrimming").ToLocalChecked(), TextTrimmingGetter, TextTrimmingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("text").ToLocalChecked(), TextGetter, TextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textWrapping").ToLocalChecked(), TextWrappingGetter, TextWrappingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textAlignment").ToLocalChecked(), TextAlignmentGetter, TextAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextSelectionEnabled").ToLocalChecked(), IsTextSelectionEnabledGetter, IsTextSelectionEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baselineOffset").ToLocalChecked(), BaselineOffsetGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectionEnd").ToLocalChecked(), SelectionEndGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectionStart").ToLocalChecked(), SelectionStartGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedText").ToLocalChecked(), SelectedTextGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentEnd").ToLocalChecked(), ContentEndGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentStart").ToLocalChecked(), ContentStartGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("inlines").ToLocalChecked(), InlinesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textReadingOrder").ToLocalChecked(), TextReadingOrderGetter, TextReadingOrderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textLineBounds").ToLocalChecked(), TextLineBoundsGetter, TextLineBoundsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectionHighlightColor").ToLocalChecked(), SelectionHighlightColorGetter, SelectionHighlightColorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opticalMarginAlignment").ToLocalChecked(), OpticalMarginAlignmentGetter, OpticalMarginAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxLines").ToLocalChecked(), MaxLinesGetter, MaxLinesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isColorFontEnabled").ToLocalChecked(), IsColorFontEnabledGetter, IsColorFontEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textDecorations").ToLocalChecked(), TextDecorationsGetter, TextDecorationsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("textAlignmentProperty").ToLocalChecked(), TextAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextSelectionEnabledProperty").ToLocalChecked(), IsTextSelectionEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lineHeightProperty").ToLocalChecked(), LineHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lineStackingStrategyProperty").ToLocalChecked(), LineStackingStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedTextProperty").ToLocalChecked(), SelectedTextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textProperty").ToLocalChecked(), TextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textTrimmingProperty").ToLocalChecked(), TextTrimmingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textWrappingProperty").ToLocalChecked(), TextWrappingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectionHighlightColorProperty").ToLocalChecked(), SelectionHighlightColorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isColorFontEnabledProperty").ToLocalChecked(), IsColorFontEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxLinesProperty").ToLocalChecked(), MaxLinesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opticalMarginAlignmentProperty").ToLocalChecked(), OpticalMarginAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textLineBoundsProperty").ToLocalChecked(), TextLineBoundsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textReadingOrderProperty").ToLocalChecked(), TextReadingOrderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textDecorationsProperty").ToLocalChecked(), TextDecorationsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("TextBlock").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      TextBlock(::Windows::UI::Xaml::Controls::TextBlock^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::TextBlock^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::TextBlock^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::TextBlock();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      TextBlock *wrapperInstance = new TextBlock(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::TextBlock^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::TextBlock^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapTextBlock(winRtInstance));
    }


    static void GetAlphaMask(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          ::Windows::UI::Composition::CompositionBrush^ result;
          result = wrapper->_instance->GetAlphaMask();
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Composition", "CompositionBrush", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void SelectAll(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->SelectAll();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Select(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Documents::TextPointer^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Documents::TextPointer^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::Documents::TextPointer^ arg0 = dynamic_cast<::Windows::UI::Xaml::Documents::TextPointer^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::UI::Xaml::Documents::TextPointer^ arg1 = dynamic_cast<::Windows::UI::Xaml::Documents::TextPointer^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          wrapper->_instance->Select(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Focus(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      if (info.Length() == 1
        && info[0]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::FocusState arg0 = static_cast<::Windows::UI::Xaml::FocusState>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          
          bool result;
          result = wrapper->_instance->Focus(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LineStackingStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::LineStackingStrategy result = wrapper->_instance->LineStackingStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LineStackingStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try {

        ::Windows::UI::Xaml::LineStackingStrategy winRtValue = static_cast<::Windows::UI::Xaml::LineStackingStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->LineStackingStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LineHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        double result = wrapper->_instance->LineHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LineHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->LineHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextTrimmingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::TextTrimming result = wrapper->_instance->TextTrimming;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextTrimmingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try {

        ::Windows::UI::Xaml::TextTrimming winRtValue = static_cast<::Windows::UI::Xaml::TextTrimming>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TextTrimming = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Text;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Text = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextWrappingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::TextWrapping result = wrapper->_instance->TextWrapping;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextWrappingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try {

        ::Windows::UI::Xaml::TextWrapping winRtValue = static_cast<::Windows::UI::Xaml::TextWrapping>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TextWrapping = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::TextAlignment result = wrapper->_instance->TextAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try {

        ::Windows::UI::Xaml::TextAlignment winRtValue = static_cast<::Windows::UI::Xaml::TextAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TextAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTextSelectionEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextSelectionEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextSelectionEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextSelectionEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaselineOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        double result = wrapper->_instance->BaselineOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectionEndGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::Documents::TextPointer^ result = wrapper->_instance->SelectionEnd;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Documents", "TextPointer", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectionStartGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::Documents::TextPointer^ result = wrapper->_instance->SelectionStart;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Documents", "TextPointer", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedTextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->SelectedText;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentEndGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::Documents::TextPointer^ result = wrapper->_instance->ContentEnd;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Documents", "TextPointer", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentStartGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::Documents::TextPointer^ result = wrapper->_instance->ContentStart;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Documents", "TextPointer", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void InlinesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::Documents::InlineCollection^ result = wrapper->_instance->Inlines;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Documents", "InlineCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextReadingOrderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::TextReadingOrder result = wrapper->_instance->TextReadingOrder;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextReadingOrderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try {

        ::Windows::UI::Xaml::TextReadingOrder winRtValue = static_cast<::Windows::UI::Xaml::TextReadingOrder>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TextReadingOrder = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextLineBoundsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::TextLineBounds result = wrapper->_instance->TextLineBounds;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextLineBoundsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try {

        ::Windows::UI::Xaml::TextLineBounds winRtValue = static_cast<::Windows::UI::Xaml::TextLineBounds>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TextLineBounds = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectionHighlightColorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::SolidColorBrush^ result = wrapper->_instance->SelectionHighlightColor;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "SolidColorBrush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectionHighlightColorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::SolidColorBrush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try {

        ::Windows::UI::Xaml::Media::SolidColorBrush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::SolidColorBrush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectionHighlightColor = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpticalMarginAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        ::Windows::UI::Xaml::OpticalMarginAlignment result = wrapper->_instance->OpticalMarginAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpticalMarginAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try {

        ::Windows::UI::Xaml::OpticalMarginAlignment winRtValue = static_cast<::Windows::UI::Xaml::OpticalMarginAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->OpticalMarginAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxLinesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        int result = wrapper->_instance->MaxLines;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxLinesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->MaxLines = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsColorFontEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        bool result = wrapper->_instance->IsColorFontEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsColorFontEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsColorFontEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextDecorationsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try  {
        ::Windows::UI::Text::TextDecorations result = wrapper->_instance->TextDecorations;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextDecorationsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This())) {
        return;
      }

      TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());

      try {

        ::Windows::UI::Text::TextDecorations winRtValue = static_cast<::Windows::UI::Text::TextDecorations>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TextDecorations = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void TextAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::TextAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextSelectionEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::IsTextSelectionEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LineHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::LineHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LineStackingStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::LineStackingStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedTextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::SelectedTextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::TextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextTrimmingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::TextTrimmingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextWrappingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::TextWrappingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectionHighlightColorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::SelectionHighlightColorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsColorFontEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::IsColorFontEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxLinesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::MaxLinesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpticalMarginAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::OpticalMarginAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextLineBoundsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::TextLineBoundsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextReadingOrderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::TextReadingOrderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextDecorationsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBlock::TextDecorationsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"contextMenuOpening", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextMenuOpening::add(
            ref new ::Windows::UI::Xaml::Controls::ContextMenuOpeningEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::ContextMenuEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapContextMenuEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SelectionChanged::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"contextMenuOpening", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"contextMenuOpening", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->ContextMenuOpening::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->SelectionChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBlock^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBlock *wrapper = TextBlock::Unwrap<TextBlock>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::TextBlock^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapTextBlock(::Windows::UI::Xaml::Controls::TextBlock^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::TextBlock^ UnwrapTextBlock(Local<Value> value);
  };

  Persistent<FunctionTemplate> TextBlock::s_constructorTemplate;

  v8::Local<v8::Value> WrapTextBlock(::Windows::UI::Xaml::Controls::TextBlock^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(TextBlock::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::TextBlock^ UnwrapTextBlock(Local<Value> value) {
     return TextBlock::Unwrap<TextBlock>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitTextBlock(Local<Object> exports) {
    TextBlock::Init(exports);
  }

  class Viewbox : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("Viewbox").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("stretchDirection").ToLocalChecked(), StretchDirectionGetter, StretchDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("stretch").ToLocalChecked(), StretchGetter, StretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("child").ToLocalChecked(), ChildGetter, ChildSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("stretchDirectionProperty").ToLocalChecked(), StretchDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("stretchProperty").ToLocalChecked(), StretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("Viewbox").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      Viewbox(::Windows::UI::Xaml::Controls::Viewbox^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::Viewbox^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::Viewbox^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::Viewbox();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      Viewbox *wrapperInstance = new Viewbox(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::Viewbox^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::Viewbox^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapViewbox(winRtInstance));
    }





    static void StretchDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This())) {
        return;
      }

      Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::StretchDirection result = wrapper->_instance->StretchDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StretchDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This())) {
        return;
      }

      Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::StretchDirection winRtValue = static_cast<::Windows::UI::Xaml::Controls::StretchDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->StretchDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This())) {
        return;
      }

      Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Stretch result = wrapper->_instance->Stretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This())) {
        return;
      }

      Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Stretch winRtValue = static_cast<::Windows::UI::Xaml::Media::Stretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Stretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This())) {
        return;
      }

      Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->Child;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ChildSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This())) {
        return;
      }

      Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());

      try {

        ::Windows::UI::Xaml::UIElement^ winRtValue = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Child = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void StretchDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Viewbox::StretchDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Viewbox::StretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Viewbox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Viewbox *wrapper = Viewbox::Unwrap<Viewbox>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::Viewbox^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapViewbox(::Windows::UI::Xaml::Controls::Viewbox^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::Viewbox^ UnwrapViewbox(Local<Value> value);
  };

  Persistent<FunctionTemplate> Viewbox::s_constructorTemplate;

  v8::Local<v8::Value> WrapViewbox(::Windows::UI::Xaml::Controls::Viewbox^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(Viewbox::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::Viewbox^ UnwrapViewbox(Local<Value> value) {
     return Viewbox::Unwrap<Viewbox>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitViewbox(Local<Object> exports) {
    Viewbox::Init(exports);
  }

  class Canvas : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("Canvas").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("childrenTransitions").ToLocalChecked(), ChildrenTransitionsGetter, ChildrenTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("children").ToLocalChecked(), ChildrenGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isItemsHost").ToLocalChecked(), IsItemsHostGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetMethod(constructor, "getLeft", GetLeft);
        Nan::SetMethod(constructor, "setLeft", SetLeft);
        Nan::SetMethod(constructor, "getTop", GetTop);
        Nan::SetMethod(constructor, "setTop", SetTop);
        Nan::SetMethod(constructor, "getZIndex", GetZIndex);
        Nan::SetMethod(constructor, "setZIndex", SetZIndex);
        Nan::SetAccessor(constructor, Nan::New<String>("leftProperty").ToLocalChecked(), LeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("topProperty").ToLocalChecked(), TopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("zIndexProperty").ToLocalChecked(), ZIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("childrenTransitionsProperty").ToLocalChecked(), ChildrenTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isItemsHostProperty").ToLocalChecked(), IsItemsHostPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("Canvas").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      Canvas(::Windows::UI::Xaml::Controls::Canvas^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::Canvas^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::Canvas^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::Canvas();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      Canvas *wrapperInstance = new Canvas(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::Canvas^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::Canvas^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapCanvas(winRtInstance));
    }





    static void GetLeft(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          double result;
          result = ::Windows::UI::Xaml::Controls::Canvas::GetLeft(arg0);
          info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetLeft(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && info[1]->IsNumber())
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          double arg1 = Nan::To<double>(info[1]).FromMaybe(0.0);
          
          ::Windows::UI::Xaml::Controls::Canvas::SetLeft(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetTop(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          double result;
          result = ::Windows::UI::Xaml::Controls::Canvas::GetTop(arg0);
          info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetTop(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && info[1]->IsNumber())
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          double arg1 = Nan::To<double>(info[1]).FromMaybe(0.0);
          
          ::Windows::UI::Xaml::Controls::Canvas::SetTop(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetZIndex(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          int result;
          result = ::Windows::UI::Xaml::Controls::Canvas::GetZIndex(arg0);
          info.GetReturnValue().Set(Nan::New<Integer>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetZIndex(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && info[1]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          int arg1 = static_cast<int>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::Canvas::SetZIndex(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void ChildrenTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ChildrenTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ChildrenTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ChildrenTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildrenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::UIElementCollection^ result = wrapper->_instance->Children;
        info.GetReturnValue().Set(WrapUIElementCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsItemsHostGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        bool result = wrapper->_instance->IsItemsHost;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void LeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Canvas::LeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Canvas::TopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ZIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Canvas::ZIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ChildrenTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::ChildrenTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsItemsHostPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::IsItemsHostProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Canvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Canvas *wrapper = Canvas::Unwrap<Canvas>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::Canvas^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapCanvas(::Windows::UI::Xaml::Controls::Canvas^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::Canvas^ UnwrapCanvas(Local<Value> value);
  };

  Persistent<FunctionTemplate> Canvas::s_constructorTemplate;

  v8::Local<v8::Value> WrapCanvas(::Windows::UI::Xaml::Controls::Canvas^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(Canvas::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::Canvas^ UnwrapCanvas(Local<Value> value) {
     return Canvas::Unwrap<Canvas>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitCanvas(Local<Object> exports) {
    Canvas::Init(exports);
  }

  class Grid : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("Grid").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("columnDefinitions").ToLocalChecked(), ColumnDefinitionsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("rowDefinitions").ToLocalChecked(), RowDefinitionsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cornerRadius").ToLocalChecked(), CornerRadiusGetter, CornerRadiusSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("childrenTransitions").ToLocalChecked(), ChildrenTransitionsGetter, ChildrenTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("children").ToLocalChecked(), ChildrenGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isItemsHost").ToLocalChecked(), IsItemsHostGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetMethod(constructor, "getRow", GetRow);
        Nan::SetMethod(constructor, "setRow", SetRow);
        Nan::SetMethod(constructor, "getColumn", GetColumn);
        Nan::SetMethod(constructor, "setColumn", SetColumn);
        Nan::SetMethod(constructor, "getRowSpan", GetRowSpan);
        Nan::SetMethod(constructor, "setRowSpan", SetRowSpan);
        Nan::SetMethod(constructor, "getColumnSpan", GetColumnSpan);
        Nan::SetMethod(constructor, "setColumnSpan", SetColumnSpan);
        Nan::SetAccessor(constructor, Nan::New<String>("columnProperty").ToLocalChecked(), ColumnPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("columnSpanProperty").ToLocalChecked(), ColumnSpanPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rowProperty").ToLocalChecked(), RowPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rowSpanProperty").ToLocalChecked(), RowSpanPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cornerRadiusProperty").ToLocalChecked(), CornerRadiusPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("childrenTransitionsProperty").ToLocalChecked(), ChildrenTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isItemsHostProperty").ToLocalChecked(), IsItemsHostPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("Grid").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      Grid(::Windows::UI::Xaml::Controls::Grid^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::Grid^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::Grid^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::Grid();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      Grid *wrapperInstance = new Grid(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::Grid^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::Grid^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapGrid(winRtInstance));
    }





    static void GetRow(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::FrameworkElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::FrameworkElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          int result;
          result = ::Windows::UI::Xaml::Controls::Grid::GetRow(arg0);
          info.GetReturnValue().Set(Nan::New<Integer>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetRow(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info[0])
        && info[1]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::FrameworkElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::FrameworkElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          int arg1 = static_cast<int>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::Grid::SetRow(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetColumn(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::FrameworkElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::FrameworkElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          int result;
          result = ::Windows::UI::Xaml::Controls::Grid::GetColumn(arg0);
          info.GetReturnValue().Set(Nan::New<Integer>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetColumn(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info[0])
        && info[1]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::FrameworkElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::FrameworkElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          int arg1 = static_cast<int>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::Grid::SetColumn(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetRowSpan(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::FrameworkElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::FrameworkElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          int result;
          result = ::Windows::UI::Xaml::Controls::Grid::GetRowSpan(arg0);
          info.GetReturnValue().Set(Nan::New<Integer>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetRowSpan(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info[0])
        && info[1]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::FrameworkElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::FrameworkElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          int arg1 = static_cast<int>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::Grid::SetRowSpan(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetColumnSpan(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::FrameworkElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::FrameworkElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          int result;
          result = ::Windows::UI::Xaml::Controls::Grid::GetColumnSpan(arg0);
          info.GetReturnValue().Set(Nan::New<Integer>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetColumnSpan(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info[0])
        && info[1]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::FrameworkElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::FrameworkElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          int arg1 = static_cast<int>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::Grid::SetColumnSpan(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void ColumnDefinitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^ result = wrapper->_instance->ColumnDefinitions;
        info.GetReturnValue().Set(WrapColumnDefinitionCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RowDefinitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RowDefinitionCollection^ result = wrapper->_instance->RowDefinitions;
        info.GetReturnValue().Set(WrapRowDefinitionCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CornerRadiusGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try  {
        ::Windows::UI::Xaml::CornerRadius result = wrapper->_instance->CornerRadius;
        info.GetReturnValue().Set(CornerRadiusToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CornerRadiusSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsCornerRadiusJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try {

        ::Windows::UI::Xaml::CornerRadius winRtValue = CornerRadiusFromJsObject(value);

        wrapper->_instance->CornerRadius = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildrenTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ChildrenTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ChildrenTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ChildrenTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildrenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::UIElementCollection^ result = wrapper->_instance->Children;
        info.GetReturnValue().Set(WrapUIElementCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsItemsHostGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        bool result = wrapper->_instance->IsItemsHost;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ColumnPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::ColumnProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ColumnSpanPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::ColumnSpanProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RowPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::RowProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RowSpanPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::RowSpanProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CornerRadiusPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::CornerRadiusProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ChildrenTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::ChildrenTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsItemsHostPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::IsItemsHostProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Grid *wrapper = Grid::Unwrap<Grid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Grid *wrapper = Grid::Unwrap<Grid>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::Grid^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapGrid(::Windows::UI::Xaml::Controls::Grid^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::Grid^ UnwrapGrid(Local<Value> value);
  };

  Persistent<FunctionTemplate> Grid::s_constructorTemplate;

  v8::Local<v8::Value> WrapGrid(::Windows::UI::Xaml::Controls::Grid^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(Grid::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::Grid^ UnwrapGrid(Local<Value> value) {
     return Grid::Unwrap<Grid>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitGrid(Local<Object> exports) {
    Grid::Init(exports);
  }

  class RelativePanel : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("RelativePanel").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cornerRadius").ToLocalChecked(), CornerRadiusGetter, CornerRadiusSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("childrenTransitions").ToLocalChecked(), ChildrenTransitionsGetter, ChildrenTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("children").ToLocalChecked(), ChildrenGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isItemsHost").ToLocalChecked(), IsItemsHostGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetMethod(constructor, "getLeftOf", GetLeftOf);
        Nan::SetMethod(constructor, "setLeftOf", SetLeftOf);
        Nan::SetMethod(constructor, "getAbove", GetAbove);
        Nan::SetMethod(constructor, "setAbove", SetAbove);
        Nan::SetMethod(constructor, "getRightOf", GetRightOf);
        Nan::SetMethod(constructor, "setRightOf", SetRightOf);
        Nan::SetMethod(constructor, "getBelow", GetBelow);
        Nan::SetMethod(constructor, "setBelow", SetBelow);
        Nan::SetMethod(constructor, "getAlignHorizontalCenterWith", GetAlignHorizontalCenterWith);
        Nan::SetMethod(constructor, "setAlignHorizontalCenterWith", SetAlignHorizontalCenterWith);
        Nan::SetMethod(constructor, "getAlignVerticalCenterWith", GetAlignVerticalCenterWith);
        Nan::SetMethod(constructor, "setAlignVerticalCenterWith", SetAlignVerticalCenterWith);
        Nan::SetMethod(constructor, "getAlignLeftWith", GetAlignLeftWith);
        Nan::SetMethod(constructor, "setAlignLeftWith", SetAlignLeftWith);
        Nan::SetMethod(constructor, "getAlignTopWith", GetAlignTopWith);
        Nan::SetMethod(constructor, "setAlignTopWith", SetAlignTopWith);
        Nan::SetMethod(constructor, "getAlignRightWith", GetAlignRightWith);
        Nan::SetMethod(constructor, "setAlignRightWith", SetAlignRightWith);
        Nan::SetMethod(constructor, "getAlignBottomWith", GetAlignBottomWith);
        Nan::SetMethod(constructor, "setAlignBottomWith", SetAlignBottomWith);
        Nan::SetMethod(constructor, "getAlignLeftWithPanel", GetAlignLeftWithPanel);
        Nan::SetMethod(constructor, "setAlignLeftWithPanel", SetAlignLeftWithPanel);
        Nan::SetMethod(constructor, "getAlignTopWithPanel", GetAlignTopWithPanel);
        Nan::SetMethod(constructor, "setAlignTopWithPanel", SetAlignTopWithPanel);
        Nan::SetMethod(constructor, "getAlignRightWithPanel", GetAlignRightWithPanel);
        Nan::SetMethod(constructor, "setAlignRightWithPanel", SetAlignRightWithPanel);
        Nan::SetMethod(constructor, "getAlignBottomWithPanel", GetAlignBottomWithPanel);
        Nan::SetMethod(constructor, "setAlignBottomWithPanel", SetAlignBottomWithPanel);
        Nan::SetMethod(constructor, "getAlignHorizontalCenterWithPanel", GetAlignHorizontalCenterWithPanel);
        Nan::SetMethod(constructor, "setAlignHorizontalCenterWithPanel", SetAlignHorizontalCenterWithPanel);
        Nan::SetMethod(constructor, "getAlignVerticalCenterWithPanel", GetAlignVerticalCenterWithPanel);
        Nan::SetMethod(constructor, "setAlignVerticalCenterWithPanel", SetAlignVerticalCenterWithPanel);
        Nan::SetAccessor(constructor, Nan::New<String>("aboveProperty").ToLocalChecked(), AbovePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("alignBottomWithPanelProperty").ToLocalChecked(), AlignBottomWithPanelPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("alignBottomWithProperty").ToLocalChecked(), AlignBottomWithPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("alignHorizontalCenterWithPanelProperty").ToLocalChecked(), AlignHorizontalCenterWithPanelPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("alignHorizontalCenterWithProperty").ToLocalChecked(), AlignHorizontalCenterWithPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("alignLeftWithPanelProperty").ToLocalChecked(), AlignLeftWithPanelPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("alignLeftWithProperty").ToLocalChecked(), AlignLeftWithPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("alignRightWithPanelProperty").ToLocalChecked(), AlignRightWithPanelPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("alignRightWithProperty").ToLocalChecked(), AlignRightWithPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("alignTopWithPanelProperty").ToLocalChecked(), AlignTopWithPanelPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("alignTopWithProperty").ToLocalChecked(), AlignTopWithPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("alignVerticalCenterWithPanelProperty").ToLocalChecked(), AlignVerticalCenterWithPanelPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("alignVerticalCenterWithProperty").ToLocalChecked(), AlignVerticalCenterWithPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("belowProperty").ToLocalChecked(), BelowPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cornerRadiusProperty").ToLocalChecked(), CornerRadiusPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("leftOfProperty").ToLocalChecked(), LeftOfPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightOfProperty").ToLocalChecked(), RightOfPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("childrenTransitionsProperty").ToLocalChecked(), ChildrenTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isItemsHostProperty").ToLocalChecked(), IsItemsHostPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("RelativePanel").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      RelativePanel(::Windows::UI::Xaml::Controls::RelativePanel^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::RelativePanel^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::RelativePanel^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::RelativePanel();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      RelativePanel *wrapperInstance = new RelativePanel(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::RelativePanel^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::RelativePanel^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapRelativePanel(winRtInstance));
    }





    static void GetLeftOf(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Platform::Object^ result;
          result = ::Windows::UI::Xaml::Controls::RelativePanel::GetLeftOf(arg0);
          info.GetReturnValue().Set(CreateOpaqueWrapper(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetLeftOf(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          ::Windows::UI::Xaml::Controls::RelativePanel::SetLeftOf(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetAbove(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Platform::Object^ result;
          result = ::Windows::UI::Xaml::Controls::RelativePanel::GetAbove(arg0);
          info.GetReturnValue().Set(CreateOpaqueWrapper(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetAbove(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          ::Windows::UI::Xaml::Controls::RelativePanel::SetAbove(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetRightOf(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Platform::Object^ result;
          result = ::Windows::UI::Xaml::Controls::RelativePanel::GetRightOf(arg0);
          info.GetReturnValue().Set(CreateOpaqueWrapper(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetRightOf(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          ::Windows::UI::Xaml::Controls::RelativePanel::SetRightOf(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetBelow(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Platform::Object^ result;
          result = ::Windows::UI::Xaml::Controls::RelativePanel::GetBelow(arg0);
          info.GetReturnValue().Set(CreateOpaqueWrapper(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetBelow(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          ::Windows::UI::Xaml::Controls::RelativePanel::SetBelow(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetAlignHorizontalCenterWith(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Platform::Object^ result;
          result = ::Windows::UI::Xaml::Controls::RelativePanel::GetAlignHorizontalCenterWith(arg0);
          info.GetReturnValue().Set(CreateOpaqueWrapper(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetAlignHorizontalCenterWith(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          ::Windows::UI::Xaml::Controls::RelativePanel::SetAlignHorizontalCenterWith(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetAlignVerticalCenterWith(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Platform::Object^ result;
          result = ::Windows::UI::Xaml::Controls::RelativePanel::GetAlignVerticalCenterWith(arg0);
          info.GetReturnValue().Set(CreateOpaqueWrapper(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetAlignVerticalCenterWith(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          ::Windows::UI::Xaml::Controls::RelativePanel::SetAlignVerticalCenterWith(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetAlignLeftWith(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Platform::Object^ result;
          result = ::Windows::UI::Xaml::Controls::RelativePanel::GetAlignLeftWith(arg0);
          info.GetReturnValue().Set(CreateOpaqueWrapper(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetAlignLeftWith(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          ::Windows::UI::Xaml::Controls::RelativePanel::SetAlignLeftWith(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetAlignTopWith(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Platform::Object^ result;
          result = ::Windows::UI::Xaml::Controls::RelativePanel::GetAlignTopWith(arg0);
          info.GetReturnValue().Set(CreateOpaqueWrapper(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetAlignTopWith(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          ::Windows::UI::Xaml::Controls::RelativePanel::SetAlignTopWith(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetAlignRightWith(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Platform::Object^ result;
          result = ::Windows::UI::Xaml::Controls::RelativePanel::GetAlignRightWith(arg0);
          info.GetReturnValue().Set(CreateOpaqueWrapper(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetAlignRightWith(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          ::Windows::UI::Xaml::Controls::RelativePanel::SetAlignRightWith(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetAlignBottomWith(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Platform::Object^ result;
          result = ::Windows::UI::Xaml::Controls::RelativePanel::GetAlignBottomWith(arg0);
          info.GetReturnValue().Set(CreateOpaqueWrapper(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetAlignBottomWith(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          ::Windows::UI::Xaml::Controls::RelativePanel::SetAlignBottomWith(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetAlignLeftWithPanel(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          bool result;
          result = ::Windows::UI::Xaml::Controls::RelativePanel::GetAlignLeftWithPanel(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetAlignLeftWithPanel(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && info[1]->IsBoolean())
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          bool arg1 = Nan::To<bool>(info[1]).FromMaybe(false);
          
          ::Windows::UI::Xaml::Controls::RelativePanel::SetAlignLeftWithPanel(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetAlignTopWithPanel(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          bool result;
          result = ::Windows::UI::Xaml::Controls::RelativePanel::GetAlignTopWithPanel(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetAlignTopWithPanel(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && info[1]->IsBoolean())
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          bool arg1 = Nan::To<bool>(info[1]).FromMaybe(false);
          
          ::Windows::UI::Xaml::Controls::RelativePanel::SetAlignTopWithPanel(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetAlignRightWithPanel(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          bool result;
          result = ::Windows::UI::Xaml::Controls::RelativePanel::GetAlignRightWithPanel(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetAlignRightWithPanel(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && info[1]->IsBoolean())
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          bool arg1 = Nan::To<bool>(info[1]).FromMaybe(false);
          
          ::Windows::UI::Xaml::Controls::RelativePanel::SetAlignRightWithPanel(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetAlignBottomWithPanel(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          bool result;
          result = ::Windows::UI::Xaml::Controls::RelativePanel::GetAlignBottomWithPanel(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetAlignBottomWithPanel(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && info[1]->IsBoolean())
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          bool arg1 = Nan::To<bool>(info[1]).FromMaybe(false);
          
          ::Windows::UI::Xaml::Controls::RelativePanel::SetAlignBottomWithPanel(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetAlignHorizontalCenterWithPanel(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          bool result;
          result = ::Windows::UI::Xaml::Controls::RelativePanel::GetAlignHorizontalCenterWithPanel(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetAlignHorizontalCenterWithPanel(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && info[1]->IsBoolean())
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          bool arg1 = Nan::To<bool>(info[1]).FromMaybe(false);
          
          ::Windows::UI::Xaml::Controls::RelativePanel::SetAlignHorizontalCenterWithPanel(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetAlignVerticalCenterWithPanel(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          bool result;
          result = ::Windows::UI::Xaml::Controls::RelativePanel::GetAlignVerticalCenterWithPanel(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetAlignVerticalCenterWithPanel(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && info[1]->IsBoolean())
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          bool arg1 = Nan::To<bool>(info[1]).FromMaybe(false);
          
          ::Windows::UI::Xaml::Controls::RelativePanel::SetAlignVerticalCenterWithPanel(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This())) {
        return;
      }

      RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This())) {
        return;
      }

      RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CornerRadiusGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This())) {
        return;
      }

      RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());

      try  {
        ::Windows::UI::Xaml::CornerRadius result = wrapper->_instance->CornerRadius;
        info.GetReturnValue().Set(CornerRadiusToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CornerRadiusSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsCornerRadiusJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This())) {
        return;
      }

      RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());

      try {

        ::Windows::UI::Xaml::CornerRadius winRtValue = CornerRadiusFromJsObject(value);

        wrapper->_instance->CornerRadius = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This())) {
        return;
      }

      RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This())) {
        return;
      }

      RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This())) {
        return;
      }

      RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This())) {
        return;
      }

      RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildrenTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ChildrenTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ChildrenTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ChildrenTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildrenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::UIElementCollection^ result = wrapper->_instance->Children;
        info.GetReturnValue().Set(WrapUIElementCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsItemsHostGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        bool result = wrapper->_instance->IsItemsHost;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void AbovePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RelativePanel::AboveProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AlignBottomWithPanelPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RelativePanel::AlignBottomWithPanelProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AlignBottomWithPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RelativePanel::AlignBottomWithProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AlignHorizontalCenterWithPanelPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RelativePanel::AlignHorizontalCenterWithPanelProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AlignHorizontalCenterWithPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RelativePanel::AlignHorizontalCenterWithProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AlignLeftWithPanelPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RelativePanel::AlignLeftWithPanelProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AlignLeftWithPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RelativePanel::AlignLeftWithProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AlignRightWithPanelPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RelativePanel::AlignRightWithPanelProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AlignRightWithPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RelativePanel::AlignRightWithProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AlignTopWithPanelPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RelativePanel::AlignTopWithPanelProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AlignTopWithPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RelativePanel::AlignTopWithProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AlignVerticalCenterWithPanelPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RelativePanel::AlignVerticalCenterWithPanelProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AlignVerticalCenterWithPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RelativePanel::AlignVerticalCenterWithProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BelowPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RelativePanel::BelowProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RelativePanel::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RelativePanel::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CornerRadiusPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RelativePanel::CornerRadiusProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LeftOfPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RelativePanel::LeftOfProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RelativePanel::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightOfPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RelativePanel::RightOfProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ChildrenTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::ChildrenTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsItemsHostPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::IsItemsHostProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RelativePanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RelativePanel *wrapper = RelativePanel::Unwrap<RelativePanel>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::RelativePanel^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapRelativePanel(::Windows::UI::Xaml::Controls::RelativePanel^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::RelativePanel^ UnwrapRelativePanel(Local<Value> value);
  };

  Persistent<FunctionTemplate> RelativePanel::s_constructorTemplate;

  v8::Local<v8::Value> WrapRelativePanel(::Windows::UI::Xaml::Controls::RelativePanel^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(RelativePanel::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::RelativePanel^ UnwrapRelativePanel(Local<Value> value) {
     return RelativePanel::Unwrap<RelativePanel>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitRelativePanel(Local<Object> exports) {
    RelativePanel::Init(exports);
  }

  class StackPanel : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("StackPanel").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "getIrregularSnapPoints", GetIrregularSnapPoints);
            Nan::SetPrototypeMethod(localRef, "getRegularSnapPoints", GetRegularSnapPoints);
            Nan::SetPrototypeMethod(localRef, "getInsertionIndexes", GetInsertionIndexes);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("orientation").ToLocalChecked(), OrientationGetter, OrientationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("areScrollSnapPointsRegular").ToLocalChecked(), AreScrollSnapPointsRegularGetter, AreScrollSnapPointsRegularSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cornerRadius").ToLocalChecked(), CornerRadiusGetter, CornerRadiusSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("areHorizontalSnapPointsRegular").ToLocalChecked(), AreHorizontalSnapPointsRegularGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("areVerticalSnapPointsRegular").ToLocalChecked(), AreVerticalSnapPointsRegularGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("childrenTransitions").ToLocalChecked(), ChildrenTransitionsGetter, ChildrenTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("children").ToLocalChecked(), ChildrenGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isItemsHost").ToLocalChecked(), IsItemsHostGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("areScrollSnapPointsRegularProperty").ToLocalChecked(), AreScrollSnapPointsRegularPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("orientationProperty").ToLocalChecked(), OrientationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cornerRadiusProperty").ToLocalChecked(), CornerRadiusPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("childrenTransitionsProperty").ToLocalChecked(), ChildrenTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isItemsHostProperty").ToLocalChecked(), IsItemsHostPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("StackPanel").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      StackPanel(::Windows::UI::Xaml::Controls::StackPanel^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::StackPanel^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::StackPanel^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::StackPanel();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      StackPanel *wrapperInstance = new StackPanel(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::StackPanel^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::StackPanel^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapStackPanel(winRtInstance));
    }


    static void GetIrregularSnapPoints(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This())) {
        return;
      }

      StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());

      if (info.Length() == 2
        && info[0]->IsInt32()
        && info[1]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::Controls::Orientation arg0 = static_cast<::Windows::UI::Xaml::Controls::Orientation>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          ::Windows::UI::Xaml::Controls::Primitives::SnapPointsAlignment arg1 = static_cast<::Windows::UI::Xaml::Controls::Primitives::SnapPointsAlignment>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          ::Windows::Foundation::Collections::IVectorView<float>^ result;
          result = wrapper->_instance->GetIrregularSnapPoints(arg0, arg1);
          info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<float>::CreateVectorViewWrapper(result, 
            [](float val) -> Local<Value> {
              return Nan::New<Number>(static_cast<double>(val));
            },
            [](Local<Value> value) -> bool {
              return value->IsNumber();
            },
            [](Local<Value> value) -> float {
              return static_cast<float>(Nan::To<double>(value).FromMaybe(0.0));
            }
          ));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetRegularSnapPoints(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This())) {
        return;
      }

      StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());

      if (info.Length() == 2
        && info[0]->IsInt32()
        && info[1]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::Controls::Orientation arg0 = static_cast<::Windows::UI::Xaml::Controls::Orientation>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          ::Windows::UI::Xaml::Controls::Primitives::SnapPointsAlignment arg1 = static_cast<::Windows::UI::Xaml::Controls::Primitives::SnapPointsAlignment>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          float arg2;
          
          float result;
          result = wrapper->_instance->GetRegularSnapPoints(arg0, arg1, &arg2);
          Local<Object> resObj = Nan::New<Object>();
          Nan::Set(resObj, Nan::New<String>("number").ToLocalChecked(), Nan::New<Number>(static_cast<double>(result)));
          Nan::Set(resObj, Nan::New<String>("offset").ToLocalChecked(), Nan::New<Number>(static_cast<double>(arg2)));
          info.GetReturnValue().Set(resObj);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetInsertionIndexes(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This())) {
        return;
      }

      StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsPoint(info[0]))
      {
        try
        {
          ::Windows::Foundation::Point arg0 = NodeRT::Utils::PointFromJs(info[0]);
          int arg1;
          int arg2;
          
          wrapper->_instance->GetInsertionIndexes(arg0, &arg1, &arg2);
          Local<Object> resObj = Nan::New<Object>();
          Nan::Set(resObj, Nan::New<String>("first").ToLocalChecked(), Nan::New<Integer>(arg1));
          Nan::Set(resObj, Nan::New<String>("second").ToLocalChecked(), Nan::New<Integer>(arg2));
          info.GetReturnValue().Set(resObj);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void OrientationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This())) {
        return;
      }

      StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Orientation result = wrapper->_instance->Orientation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OrientationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This())) {
        return;
      }

      StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Orientation winRtValue = static_cast<::Windows::UI::Xaml::Controls::Orientation>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Orientation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AreScrollSnapPointsRegularGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This())) {
        return;
      }

      StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());

      try  {
        bool result = wrapper->_instance->AreScrollSnapPointsRegular;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AreScrollSnapPointsRegularSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This())) {
        return;
      }

      StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AreScrollSnapPointsRegular = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This())) {
        return;
      }

      StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This())) {
        return;
      }

      StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CornerRadiusGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This())) {
        return;
      }

      StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());

      try  {
        ::Windows::UI::Xaml::CornerRadius result = wrapper->_instance->CornerRadius;
        info.GetReturnValue().Set(CornerRadiusToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CornerRadiusSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsCornerRadiusJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This())) {
        return;
      }

      StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());

      try {

        ::Windows::UI::Xaml::CornerRadius winRtValue = CornerRadiusFromJsObject(value);

        wrapper->_instance->CornerRadius = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This())) {
        return;
      }

      StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This())) {
        return;
      }

      StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This())) {
        return;
      }

      StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This())) {
        return;
      }

      StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AreHorizontalSnapPointsRegularGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This())) {
        return;
      }

      StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());

      try  {
        bool result = wrapper->_instance->AreHorizontalSnapPointsRegular;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AreVerticalSnapPointsRegularGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This())) {
        return;
      }

      StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());

      try  {
        bool result = wrapper->_instance->AreVerticalSnapPointsRegular;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ChildrenTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ChildrenTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ChildrenTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ChildrenTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildrenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::UIElementCollection^ result = wrapper->_instance->Children;
        info.GetReturnValue().Set(WrapUIElementCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsItemsHostGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        bool result = wrapper->_instance->IsItemsHost;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void AreScrollSnapPointsRegularPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::StackPanel::AreScrollSnapPointsRegularProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OrientationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::StackPanel::OrientationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::StackPanel::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::StackPanel::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CornerRadiusPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::StackPanel::CornerRadiusProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::StackPanel::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ChildrenTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::ChildrenTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsItemsHostPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::IsItemsHostProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"horizontalSnapPointsChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->HorizontalSnapPointsChanged::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"verticalSnapPointsChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->VerticalSnapPointsChanged::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"horizontalSnapPointsChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"verticalSnapPointsChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"horizontalSnapPointsChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->HorizontalSnapPointsChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"verticalSnapPointsChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->VerticalSnapPointsChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          StackPanel *wrapper = StackPanel::Unwrap<StackPanel>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::StackPanel^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapStackPanel(::Windows::UI::Xaml::Controls::StackPanel^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::StackPanel^ UnwrapStackPanel(Local<Value> value);
  };

  Persistent<FunctionTemplate> StackPanel::s_constructorTemplate;

  v8::Local<v8::Value> WrapStackPanel(::Windows::UI::Xaml::Controls::StackPanel^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(StackPanel::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::StackPanel^ UnwrapStackPanel(Local<Value> value) {
     return StackPanel::Unwrap<StackPanel>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitStackPanel(Local<Object> exports) {
    StackPanel::Init(exports);
  }

  class VariableSizedWrapGrid : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("VariableSizedWrapGrid").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalChildrenAlignment").ToLocalChecked(), VerticalChildrenAlignmentGetter, VerticalChildrenAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("orientation").ToLocalChecked(), OrientationGetter, OrientationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maximumRowsOrColumns").ToLocalChecked(), MaximumRowsOrColumnsGetter, MaximumRowsOrColumnsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemWidth").ToLocalChecked(), ItemWidthGetter, ItemWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemHeight").ToLocalChecked(), ItemHeightGetter, ItemHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalChildrenAlignment").ToLocalChecked(), HorizontalChildrenAlignmentGetter, HorizontalChildrenAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("childrenTransitions").ToLocalChecked(), ChildrenTransitionsGetter, ChildrenTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("children").ToLocalChecked(), ChildrenGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isItemsHost").ToLocalChecked(), IsItemsHostGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetMethod(constructor, "getRowSpan", GetRowSpan);
        Nan::SetMethod(constructor, "setRowSpan", SetRowSpan);
        Nan::SetMethod(constructor, "getColumnSpan", GetColumnSpan);
        Nan::SetMethod(constructor, "setColumnSpan", SetColumnSpan);
        Nan::SetAccessor(constructor, Nan::New<String>("columnSpanProperty").ToLocalChecked(), ColumnSpanPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalChildrenAlignmentProperty").ToLocalChecked(), HorizontalChildrenAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemHeightProperty").ToLocalChecked(), ItemHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemWidthProperty").ToLocalChecked(), ItemWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maximumRowsOrColumnsProperty").ToLocalChecked(), MaximumRowsOrColumnsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("orientationProperty").ToLocalChecked(), OrientationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rowSpanProperty").ToLocalChecked(), RowSpanPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalChildrenAlignmentProperty").ToLocalChecked(), VerticalChildrenAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("childrenTransitionsProperty").ToLocalChecked(), ChildrenTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isItemsHostProperty").ToLocalChecked(), IsItemsHostPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("VariableSizedWrapGrid").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      VariableSizedWrapGrid(::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::VariableSizedWrapGrid();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      VariableSizedWrapGrid *wrapperInstance = new VariableSizedWrapGrid(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapVariableSizedWrapGrid(winRtInstance));
    }





    static void GetRowSpan(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          int result;
          result = ::Windows::UI::Xaml::Controls::VariableSizedWrapGrid::GetRowSpan(arg0);
          info.GetReturnValue().Set(Nan::New<Integer>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetRowSpan(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && info[1]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          int arg1 = static_cast<int>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::VariableSizedWrapGrid::SetRowSpan(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetColumnSpan(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          int result;
          result = ::Windows::UI::Xaml::Controls::VariableSizedWrapGrid::GetColumnSpan(arg0);
          info.GetReturnValue().Set(Nan::New<Integer>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetColumnSpan(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && info[1]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          int arg1 = static_cast<int>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::VariableSizedWrapGrid::SetColumnSpan(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void VerticalChildrenAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This())) {
        return;
      }

      VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalChildrenAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalChildrenAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This())) {
        return;
      }

      VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalChildrenAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OrientationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This())) {
        return;
      }

      VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Orientation result = wrapper->_instance->Orientation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OrientationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This())) {
        return;
      }

      VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Orientation winRtValue = static_cast<::Windows::UI::Xaml::Controls::Orientation>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Orientation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaximumRowsOrColumnsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This())) {
        return;
      }

      VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());

      try  {
        int result = wrapper->_instance->MaximumRowsOrColumns;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaximumRowsOrColumnsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This())) {
        return;
      }

      VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->MaximumRowsOrColumns = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This())) {
        return;
      }

      VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());

      try  {
        double result = wrapper->_instance->ItemWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This())) {
        return;
      }

      VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->ItemWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This())) {
        return;
      }

      VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());

      try  {
        double result = wrapper->_instance->ItemHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This())) {
        return;
      }

      VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->ItemHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalChildrenAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This())) {
        return;
      }

      VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalChildrenAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalChildrenAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This())) {
        return;
      }

      VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalChildrenAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildrenTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ChildrenTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ChildrenTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ChildrenTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildrenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::UIElementCollection^ result = wrapper->_instance->Children;
        info.GetReturnValue().Set(WrapUIElementCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsItemsHostGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        bool result = wrapper->_instance->IsItemsHost;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ColumnSpanPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::VariableSizedWrapGrid::ColumnSpanProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalChildrenAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::VariableSizedWrapGrid::HorizontalChildrenAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::VariableSizedWrapGrid::ItemHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::VariableSizedWrapGrid::ItemWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaximumRowsOrColumnsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::VariableSizedWrapGrid::MaximumRowsOrColumnsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OrientationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::VariableSizedWrapGrid::OrientationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RowSpanPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::VariableSizedWrapGrid::RowSpanProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalChildrenAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::VariableSizedWrapGrid::VerticalChildrenAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ChildrenTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::ChildrenTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsItemsHostPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::IsItemsHostProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VariableSizedWrapGrid *wrapper = VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapVariableSizedWrapGrid(::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^ UnwrapVariableSizedWrapGrid(Local<Value> value);
  };

  Persistent<FunctionTemplate> VariableSizedWrapGrid::s_constructorTemplate;

  v8::Local<v8::Value> WrapVariableSizedWrapGrid(::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(VariableSizedWrapGrid::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::VariableSizedWrapGrid^ UnwrapVariableSizedWrapGrid(Local<Value> value) {
     return VariableSizedWrapGrid::Unwrap<VariableSizedWrapGrid>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitVariableSizedWrapGrid(Local<Object> exports) {
    VariableSizedWrapGrid::Init(exports);
  }

  class VirtualizingPanel : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("VirtualizingPanel").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "onItemsChanged", OnItemsChanged);
            Nan::SetPrototypeMethod(localRef, "onClearChildren", OnClearChildren);
            Nan::SetPrototypeMethod(localRef, "bringIndexIntoView", BringIndexIntoView);
            Nan::SetPrototypeMethod(localRef, "addInternalChild", AddInternalChild);
            Nan::SetPrototypeMethod(localRef, "insertInternalChild", InsertInternalChild);
            Nan::SetPrototypeMethod(localRef, "removeInternalChildRange", RemoveInternalChildRange);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerGenerator").ToLocalChecked(), ItemContainerGeneratorGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("childrenTransitions").ToLocalChecked(), ChildrenTransitionsGetter, ChildrenTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("children").ToLocalChecked(), ChildrenGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isItemsHost").ToLocalChecked(), IsItemsHostGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("childrenTransitionsProperty").ToLocalChecked(), ChildrenTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isItemsHostProperty").ToLocalChecked(), IsItemsHostPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("VirtualizingPanel").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      VirtualizingPanel(::Windows::UI::Xaml::Controls::VirtualizingPanel^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::VirtualizingPanel^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::VirtualizingPanel^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      VirtualizingPanel *wrapperInstance = new VirtualizingPanel(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::VirtualizingPanel^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::VirtualizingPanel^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapVirtualizingPanel(winRtInstance));
    }


    static void OnItemsChanged(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This())) {
        return;
      }

      VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ItemsChangedEventArgs^>(info[1]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::UI::Xaml::Controls::Primitives::ItemsChangedEventArgs^ arg1 = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::ItemsChangedEventArgs^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          wrapper->_instance->OnItemsChanged(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnClearChildren(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This())) {
        return;
      }

      VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->OnClearChildren();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void BringIndexIntoView(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This())) {
        return;
      }

      VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());

      if (info.Length() == 1
        && info[0]->IsInt32())
      {
        try
        {
          int arg0 = static_cast<int>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          
          wrapper->_instance->BringIndexIntoView(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void AddInternalChild(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This())) {
        return;
      }

      VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->AddInternalChild(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void InsertInternalChild(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This())) {
        return;
      }

      VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());

      if (info.Length() == 2
        && info[0]->IsInt32()
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[1]))
      {
        try
        {
          int arg0 = static_cast<int>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          ::Windows::UI::Xaml::UIElement^ arg1 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          wrapper->_instance->InsertInternalChild(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void RemoveInternalChildRange(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This())) {
        return;
      }

      VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());

      if (info.Length() == 2
        && info[0]->IsInt32()
        && info[1]->IsInt32())
      {
        try
        {
          int arg0 = static_cast<int>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          int arg1 = static_cast<int>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          wrapper->_instance->RemoveInternalChildRange(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void ItemContainerGeneratorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This())) {
        return;
      }

      VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemContainerGenerator^ result = wrapper->_instance->ItemContainerGenerator;
        info.GetReturnValue().Set(WrapItemContainerGenerator(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ChildrenTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ChildrenTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ChildrenTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ChildrenTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildrenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::UIElementCollection^ result = wrapper->_instance->Children;
        info.GetReturnValue().Set(WrapUIElementCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsItemsHostGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        bool result = wrapper->_instance->IsItemsHost;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ChildrenTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::ChildrenTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsItemsHostPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::IsItemsHostProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::VirtualizingPanel^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapVirtualizingPanel(::Windows::UI::Xaml::Controls::VirtualizingPanel^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::VirtualizingPanel^ UnwrapVirtualizingPanel(Local<Value> value);
  };

  Persistent<FunctionTemplate> VirtualizingPanel::s_constructorTemplate;

  v8::Local<v8::Value> WrapVirtualizingPanel(::Windows::UI::Xaml::Controls::VirtualizingPanel^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(VirtualizingPanel::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::VirtualizingPanel^ UnwrapVirtualizingPanel(Local<Value> value) {
     return VirtualizingPanel::Unwrap<VirtualizingPanel>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitVirtualizingPanel(Local<Object> exports) {
    VirtualizingPanel::Init(exports);
  }

  class VirtualizingStackPanel : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("VirtualizingStackPanel").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "onCleanUpVirtualizedItem", OnCleanUpVirtualizedItem);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("orientation").ToLocalChecked(), OrientationGetter, OrientationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("areScrollSnapPointsRegular").ToLocalChecked(), AreScrollSnapPointsRegularGetter, AreScrollSnapPointsRegularSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("scrollOwner").ToLocalChecked(), ScrollOwnerGetter, ScrollOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canVerticallyScroll").ToLocalChecked(), CanVerticallyScrollGetter, CanVerticallyScrollSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canHorizontallyScroll").ToLocalChecked(), CanHorizontallyScrollGetter, CanHorizontallyScrollSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("extentHeight").ToLocalChecked(), ExtentHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("extentWidth").ToLocalChecked(), ExtentWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalOffset").ToLocalChecked(), HorizontalOffsetGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalOffset").ToLocalChecked(), VerticalOffsetGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("viewportHeight").ToLocalChecked(), ViewportHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("viewportWidth").ToLocalChecked(), ViewportWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("areHorizontalSnapPointsRegular").ToLocalChecked(), AreHorizontalSnapPointsRegularGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("areVerticalSnapPointsRegular").ToLocalChecked(), AreVerticalSnapPointsRegularGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerGenerator").ToLocalChecked(), ItemContainerGeneratorGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("childrenTransitions").ToLocalChecked(), ChildrenTransitionsGetter, ChildrenTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("children").ToLocalChecked(), ChildrenGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isItemsHost").ToLocalChecked(), IsItemsHostGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetMethod(constructor, "getVirtualizationMode", GetVirtualizationMode);
        Nan::SetMethod(constructor, "setVirtualizationMode", SetVirtualizationMode);
        Nan::SetMethod(constructor, "getIsVirtualizing", GetIsVirtualizing);
        Nan::SetAccessor(constructor, Nan::New<String>("areScrollSnapPointsRegularProperty").ToLocalChecked(), AreScrollSnapPointsRegularPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isVirtualizingProperty").ToLocalChecked(), IsVirtualizingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("orientationProperty").ToLocalChecked(), OrientationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("virtualizationModeProperty").ToLocalChecked(), VirtualizationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("childrenTransitionsProperty").ToLocalChecked(), ChildrenTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isItemsHostProperty").ToLocalChecked(), IsItemsHostPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("VirtualizingStackPanel").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      VirtualizingStackPanel(::Windows::UI::Xaml::Controls::VirtualizingStackPanel^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::VirtualizingStackPanel^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::VirtualizingStackPanel^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::VirtualizingStackPanel();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      VirtualizingStackPanel *wrapperInstance = new VirtualizingStackPanel(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::VirtualizingStackPanel^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::VirtualizingStackPanel^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapVirtualizingStackPanel(winRtInstance));
    }


    static void OnCleanUpVirtualizedItem(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This())) {
        return;
      }

      VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventArgs^ arg0 = UnwrapCleanUpVirtualizedItemEventArgs(info[0]);
          
          wrapper->_instance->OnCleanUpVirtualizedItem(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void GetVirtualizationMode(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Windows::UI::Xaml::Controls::VirtualizationMode result;
          result = ::Windows::UI::Xaml::Controls::VirtualizingStackPanel::GetVirtualizationMode(arg0);
          info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetVirtualizationMode(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0])
        && info[1]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::UI::Xaml::Controls::VirtualizationMode arg1 = static_cast<::Windows::UI::Xaml::Controls::VirtualizationMode>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::VirtualizingStackPanel::SetVirtualizationMode(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetIsVirtualizing(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          bool result;
          result = ::Windows::UI::Xaml::Controls::VirtualizingStackPanel::GetIsVirtualizing(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void OrientationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This())) {
        return;
      }

      VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Orientation result = wrapper->_instance->Orientation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OrientationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This())) {
        return;
      }

      VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Orientation winRtValue = static_cast<::Windows::UI::Xaml::Controls::Orientation>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Orientation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AreScrollSnapPointsRegularGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This())) {
        return;
      }

      VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());

      try  {
        bool result = wrapper->_instance->AreScrollSnapPointsRegular;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AreScrollSnapPointsRegularSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This())) {
        return;
      }

      VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AreScrollSnapPointsRegular = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ScrollOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->ScrollOwner;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ScrollOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ScrollOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanVerticallyScrollGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try  {
        bool result = wrapper->_instance->CanVerticallyScroll;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanVerticallyScrollSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanVerticallyScroll = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanHorizontallyScrollGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try  {
        bool result = wrapper->_instance->CanHorizontallyScroll;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanHorizontallyScrollSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanHorizontallyScroll = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExtentHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try  {
        double result = wrapper->_instance->ExtentHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExtentWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try  {
        double result = wrapper->_instance->ExtentWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try  {
        double result = wrapper->_instance->HorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try  {
        double result = wrapper->_instance->VerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ViewportHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try  {
        double result = wrapper->_instance->ViewportHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ViewportWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try  {
        double result = wrapper->_instance->ViewportWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AreHorizontalSnapPointsRegularGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try  {
        bool result = wrapper->_instance->AreHorizontalSnapPointsRegular;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AreVerticalSnapPointsRegularGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try  {
        bool result = wrapper->_instance->AreVerticalSnapPointsRegular;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerGeneratorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This())) {
        return;
      }

      VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemContainerGenerator^ result = wrapper->_instance->ItemContainerGenerator;
        info.GetReturnValue().Set(WrapItemContainerGenerator(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ChildrenTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ChildrenTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ChildrenTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ChildrenTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildrenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::UIElementCollection^ result = wrapper->_instance->Children;
        info.GetReturnValue().Set(WrapUIElementCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsItemsHostGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        bool result = wrapper->_instance->IsItemsHost;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void AreScrollSnapPointsRegularPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::VirtualizingStackPanel::AreScrollSnapPointsRegularProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsVirtualizingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::VirtualizingStackPanel::IsVirtualizingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OrientationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::VirtualizingStackPanel::OrientationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VirtualizationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::VirtualizingStackPanel::VirtualizationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ChildrenTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::ChildrenTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsItemsHostPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::IsItemsHostProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"cleanUpVirtualizedItemEvent", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->CleanUpVirtualizedItemEvent::add(
            ref new ::Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapCleanUpVirtualizedItemEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"horizontalSnapPointsChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->HorizontalSnapPointsChanged::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"verticalSnapPointsChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->VerticalSnapPointsChanged::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"cleanUpVirtualizedItemEvent", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"horizontalSnapPointsChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"verticalSnapPointsChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"cleanUpVirtualizedItemEvent", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->CleanUpVirtualizedItemEvent::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"horizontalSnapPointsChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->HorizontalSnapPointsChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"verticalSnapPointsChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->VerticalSnapPointsChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          VirtualizingStackPanel *wrapper = VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::VirtualizingStackPanel^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapVirtualizingStackPanel(::Windows::UI::Xaml::Controls::VirtualizingStackPanel^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::VirtualizingStackPanel^ UnwrapVirtualizingStackPanel(Local<Value> value);
  };

  Persistent<FunctionTemplate> VirtualizingStackPanel::s_constructorTemplate;

  v8::Local<v8::Value> WrapVirtualizingStackPanel(::Windows::UI::Xaml::Controls::VirtualizingStackPanel^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(VirtualizingStackPanel::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::VirtualizingStackPanel^ UnwrapVirtualizingStackPanel(Local<Value> value) {
     return VirtualizingStackPanel::Unwrap<VirtualizingStackPanel>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitVirtualizingStackPanel(Local<Object> exports) {
    VirtualizingStackPanel::Init(exports);
  }

  class IconElement : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("IconElement").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("IconElement").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      IconElement(::Windows::UI::Xaml::Controls::IconElement^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::IconElement^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::IconElement^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IconElement *wrapperInstance = new IconElement(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::IconElement^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::IconElement^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapIconElement(winRtInstance));
    }





    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This())) {
        return;
      }

      IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This())) {
        return;
      }

      IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::IconElement::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::IconElement^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapIconElement(::Windows::UI::Xaml::Controls::IconElement^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::IconElement^ UnwrapIconElement(Local<Value> value);
  };

  Persistent<FunctionTemplate> IconElement::s_constructorTemplate;

  v8::Local<v8::Value> WrapIconElement(::Windows::UI::Xaml::Controls::IconElement^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IconElement::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::IconElement^ UnwrapIconElement(Local<Value> value) {
     return IconElement::Unwrap<IconElement>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIconElement(Local<Object> exports) {
    IconElement::Init(exports);
  }

  class InkCanvas : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("InkCanvas").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("inkPresenter").ToLocalChecked(), InkPresenterGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("InkCanvas").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      InkCanvas(::Windows::UI::Xaml::Controls::InkCanvas^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::InkCanvas^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::InkCanvas^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::InkCanvas();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      InkCanvas *wrapperInstance = new InkCanvas(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::InkCanvas^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::InkCanvas^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapInkCanvas(winRtInstance));
    }





    static void InkPresenterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This())) {
        return;
      }

      InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());

      try  {
        ::Windows::UI::Input::Inking::InkPresenter^ result = wrapper->_instance->InkPresenter;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Input.Inking", "InkPresenter", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkCanvas *wrapper = InkCanvas::Unwrap<InkCanvas>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::InkCanvas^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapInkCanvas(::Windows::UI::Xaml::Controls::InkCanvas^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::InkCanvas^ UnwrapInkCanvas(Local<Value> value);
  };

  Persistent<FunctionTemplate> InkCanvas::s_constructorTemplate;

  v8::Local<v8::Value> WrapInkCanvas(::Windows::UI::Xaml::Controls::InkCanvas^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(InkCanvas::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::InkCanvas^ UnwrapInkCanvas(Local<Value> value) {
     return InkCanvas::Unwrap<InkCanvas>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitInkCanvas(Local<Object> exports) {
    InkCanvas::Init(exports);
  }

  class MediaElement : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("MediaElement").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "stop", Stop);
            Nan::SetPrototypeMethod(localRef, "play", Play);
            Nan::SetPrototypeMethod(localRef, "pause", Pause);
            Nan::SetPrototypeMethod(localRef, "canPlayType", CanPlayType);
            Nan::SetPrototypeMethod(localRef, "setSource", SetSource);
            Nan::SetPrototypeMethod(localRef, "getAudioStreamLanguage", GetAudioStreamLanguage);
            Nan::SetPrototypeMethod(localRef, "addAudioEffect", AddAudioEffect);
            Nan::SetPrototypeMethod(localRef, "addVideoEffect", AddVideoEffect);
            Nan::SetPrototypeMethod(localRef, "removeAllEffects", RemoveAllEffects);
            Nan::SetPrototypeMethod(localRef, "setMediaStreamSource", SetMediaStreamSource);
            Nan::SetPrototypeMethod(localRef, "setPlaybackSource", SetPlaybackSource);
            Nan::SetPrototypeMethod(localRef, "getAsCastingSource", GetAsCastingSource);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("playbackRate").ToLocalChecked(), PlaybackRateGetter, PlaybackRateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("autoPlay").ToLocalChecked(), AutoPlayGetter, AutoPlaySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("audioStreamIndex").ToLocalChecked(), AudioStreamIndexGetter, AudioStreamIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isMuted").ToLocalChecked(), IsMutedGetter, IsMutedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("audioCategory").ToLocalChecked(), AudioCategoryGetter, AudioCategorySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultPlaybackRate").ToLocalChecked(), DefaultPlaybackRateGetter, DefaultPlaybackRateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isLooping").ToLocalChecked(), IsLoopingGetter, IsLoopingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("balance").ToLocalChecked(), BalanceGetter, BalanceSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("audioDeviceType").ToLocalChecked(), AudioDeviceTypeGetter, AudioDeviceTypeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("volume").ToLocalChecked(), VolumeGetter, VolumeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("stereo3DVideoRenderMode").ToLocalChecked(), Stereo3DVideoRenderModeGetter, Stereo3DVideoRenderModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("stereo3DVideoPackingMode").ToLocalChecked(), Stereo3DVideoPackingModeGetter, Stereo3DVideoPackingModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("source").ToLocalChecked(), SourceGetter, SourceSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("realTimePlayback").ToLocalChecked(), RealTimePlaybackGetter, RealTimePlaybackSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("protectionManager").ToLocalChecked(), ProtectionManagerGetter, ProtectionManagerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("posterSource").ToLocalChecked(), PosterSourceGetter, PosterSourceSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("position").ToLocalChecked(), PositionGetter, PositionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("downloadProgressOffset").ToLocalChecked(), DownloadProgressOffsetGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAudioOnly").ToLocalChecked(), IsAudioOnlyGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isStereo3DVideo").ToLocalChecked(), IsStereo3DVideoGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("markers").ToLocalChecked(), MarkersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("naturalDuration").ToLocalChecked(), NaturalDurationGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("naturalVideoHeight").ToLocalChecked(), NaturalVideoHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("naturalVideoWidth").ToLocalChecked(), NaturalVideoWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("playToSource").ToLocalChecked(), PlayToSourceGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("aspectRatioHeight").ToLocalChecked(), AspectRatioHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("aspectRatioWidth").ToLocalChecked(), AspectRatioWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualStereo3DVideoPackingMode").ToLocalChecked(), ActualStereo3DVideoPackingModeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("audioStreamCount").ToLocalChecked(), AudioStreamCountGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("bufferingProgress").ToLocalChecked(), BufferingProgressGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canPause").ToLocalChecked(), CanPauseGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canSeek").ToLocalChecked(), CanSeekGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("currentState").ToLocalChecked(), CurrentStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("downloadProgress").ToLocalChecked(), DownloadProgressGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("stretch").ToLocalChecked(), StretchGetter, StretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("playToPreferredSourceUri").ToLocalChecked(), PlayToPreferredSourceUriGetter, PlayToPreferredSourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFullWindow").ToLocalChecked(), IsFullWindowGetter, IsFullWindowSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("areTransportControlsEnabled").ToLocalChecked(), AreTransportControlsEnabledGetter, AreTransportControlsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transportControls").ToLocalChecked(), TransportControlsGetter, TransportControlsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("aspectRatioHeightProperty").ToLocalChecked(), AspectRatioHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualStereo3DVideoPackingModeProperty").ToLocalChecked(), ActualStereo3DVideoPackingModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("downloadProgressOffsetProperty").ToLocalChecked(), DownloadProgressOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("aspectRatioWidthProperty").ToLocalChecked(), AspectRatioWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("audioCategoryProperty").ToLocalChecked(), AudioCategoryPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("audioDeviceTypeProperty").ToLocalChecked(), AudioDeviceTypePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("audioStreamCountProperty").ToLocalChecked(), AudioStreamCountPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("audioStreamIndexProperty").ToLocalChecked(), AudioStreamIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("autoPlayProperty").ToLocalChecked(), AutoPlayPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("balanceProperty").ToLocalChecked(), BalancePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("bufferingProgressProperty").ToLocalChecked(), BufferingProgressPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canPauseProperty").ToLocalChecked(), CanPausePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canSeekProperty").ToLocalChecked(), CanSeekPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("currentStateProperty").ToLocalChecked(), CurrentStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultPlaybackRateProperty").ToLocalChecked(), DefaultPlaybackRatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("downloadProgressProperty").ToLocalChecked(), DownloadProgressPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAudioOnlyProperty").ToLocalChecked(), IsAudioOnlyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isLoopingProperty").ToLocalChecked(), IsLoopingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isMutedProperty").ToLocalChecked(), IsMutedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isStereo3DVideoProperty").ToLocalChecked(), IsStereo3DVideoPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("naturalDurationProperty").ToLocalChecked(), NaturalDurationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("naturalVideoHeightProperty").ToLocalChecked(), NaturalVideoHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("naturalVideoWidthProperty").ToLocalChecked(), NaturalVideoWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("playToSourceProperty").ToLocalChecked(), PlayToSourcePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("playbackRateProperty").ToLocalChecked(), PlaybackRatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("positionProperty").ToLocalChecked(), PositionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("posterSourceProperty").ToLocalChecked(), PosterSourcePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("protectionManagerProperty").ToLocalChecked(), ProtectionManagerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("realTimePlaybackProperty").ToLocalChecked(), RealTimePlaybackPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("sourceProperty").ToLocalChecked(), SourcePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("stereo3DVideoPackingModeProperty").ToLocalChecked(), Stereo3DVideoPackingModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("stereo3DVideoRenderModeProperty").ToLocalChecked(), Stereo3DVideoRenderModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("volumeProperty").ToLocalChecked(), VolumePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFullWindowProperty").ToLocalChecked(), IsFullWindowPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("playToPreferredSourceUriProperty").ToLocalChecked(), PlayToPreferredSourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("stretchProperty").ToLocalChecked(), StretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("areTransportControlsEnabledProperty").ToLocalChecked(), AreTransportControlsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("MediaElement").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      MediaElement(::Windows::UI::Xaml::Controls::MediaElement^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::MediaElement^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::MediaElement^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::MediaElement();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      MediaElement *wrapperInstance = new MediaElement(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::MediaElement^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::MediaElement^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapMediaElement(winRtInstance));
    }


    static void Stop(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->Stop();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Play(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->Play();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Pause(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->Pause();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void CanPlayType(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      if (info.Length() == 1
        && info[0]->IsString())
      {
        try
        {
          Platform::String^ arg0 = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), info[0])));
          
          ::Windows::UI::Xaml::Media::MediaCanPlayResponse result;
          result = wrapper->_instance->CanPlayType(arg0);
          info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void SetSource(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::Storage::Streams::IRandomAccessStream^>(info[0])
        && info[1]->IsString())
      {
        try
        {
          ::Windows::Storage::Streams::IRandomAccessStream^ arg0 = dynamic_cast<::Windows::Storage::Streams::IRandomAccessStream^>(NodeRT::Utils::GetObjectInstance(info[0]));
          Platform::String^ arg1 = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), info[1])));
          
          wrapper->_instance->SetSource(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetAudioStreamLanguage(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      if (info.Length() == 1
        && info[0]->IsInt32())
      {
        try
        {
          ::Platform::IBox<int>^ arg0 = ref new ::Platform::Box<int>(static_cast<int>(Nan::To<int32_t>(info[0]).FromMaybe(0)));
          
          Platform::String^ result;
          result = wrapper->_instance->GetAudioStreamLanguage(arg0);
          info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void AddAudioEffect(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      if (info.Length() == 3
        && info[0]->IsString()
        && info[1]->IsBoolean()
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Collections::IPropertySet^>(info[2]))
      {
        try
        {
          Platform::String^ arg0 = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), info[0])));
          bool arg1 = Nan::To<bool>(info[1]).FromMaybe(false);
          ::Windows::Foundation::Collections::IPropertySet^ arg2 = dynamic_cast<::Windows::Foundation::Collections::IPropertySet^>(NodeRT::Utils::GetObjectInstance(info[2]));
          
          wrapper->_instance->AddAudioEffect(arg0, arg1, arg2);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void AddVideoEffect(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      if (info.Length() == 3
        && info[0]->IsString()
        && info[1]->IsBoolean()
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Collections::IPropertySet^>(info[2]))
      {
        try
        {
          Platform::String^ arg0 = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), info[0])));
          bool arg1 = Nan::To<bool>(info[1]).FromMaybe(false);
          ::Windows::Foundation::Collections::IPropertySet^ arg2 = dynamic_cast<::Windows::Foundation::Collections::IPropertySet^>(NodeRT::Utils::GetObjectInstance(info[2]));
          
          wrapper->_instance->AddVideoEffect(arg0, arg1, arg2);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void RemoveAllEffects(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->RemoveAllEffects();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void SetMediaStreamSource(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::Media::Core::IMediaSource^>(info[0]))
      {
        try
        {
          ::Windows::Media::Core::IMediaSource^ arg0 = dynamic_cast<::Windows::Media::Core::IMediaSource^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->SetMediaStreamSource(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void SetPlaybackSource(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::Media::Playback::IMediaPlaybackSource^>(info[0]))
      {
        try
        {
          ::Windows::Media::Playback::IMediaPlaybackSource^ arg0 = dynamic_cast<::Windows::Media::Playback::IMediaPlaybackSource^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->SetPlaybackSource(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetAsCastingSource(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          ::Windows::Media::Casting::CastingSource^ result;
          result = wrapper->_instance->GetAsCastingSource();
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Media.Casting", "CastingSource", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void PlaybackRateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        double result = wrapper->_instance->PlaybackRate;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PlaybackRateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->PlaybackRate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AutoPlayGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        bool result = wrapper->_instance->AutoPlay;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AutoPlaySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AutoPlay = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AudioStreamIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        ::Platform::IBox<int>^ result = wrapper->_instance->AudioStreamIndex;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Integer>(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AudioStreamIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try {

        ::Platform::IBox<int>^ winRtValue = ref new ::Platform::Box<int>(static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0)));

        wrapper->_instance->AudioStreamIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsMutedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsMuted;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsMutedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsMuted = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AudioCategoryGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::AudioCategory result = wrapper->_instance->AudioCategory;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AudioCategorySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::AudioCategory winRtValue = static_cast<::Windows::UI::Xaml::Media::AudioCategory>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->AudioCategory = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultPlaybackRateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        double result = wrapper->_instance->DefaultPlaybackRate;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultPlaybackRateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->DefaultPlaybackRate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsLoopingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsLooping;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsLoopingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsLooping = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BalanceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        double result = wrapper->_instance->Balance;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BalanceSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Balance = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AudioDeviceTypeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::AudioDeviceType result = wrapper->_instance->AudioDeviceType;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AudioDeviceTypeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::AudioDeviceType winRtValue = static_cast<::Windows::UI::Xaml::Media::AudioDeviceType>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->AudioDeviceType = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VolumeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        double result = wrapper->_instance->Volume;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VolumeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Volume = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Stereo3DVideoRenderModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Stereo3DVideoRenderMode result = wrapper->_instance->Stereo3DVideoRenderMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Stereo3DVideoRenderModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Stereo3DVideoRenderMode winRtValue = static_cast<::Windows::UI::Xaml::Media::Stereo3DVideoRenderMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Stereo3DVideoRenderMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Stereo3DVideoPackingModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Stereo3DVideoPackingMode result = wrapper->_instance->Stereo3DVideoPackingMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Stereo3DVideoPackingModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Stereo3DVideoPackingMode winRtValue = static_cast<::Windows::UI::Xaml::Media::Stereo3DVideoPackingMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Stereo3DVideoPackingMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->Source;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SourceSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Source = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RealTimePlaybackGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        bool result = wrapper->_instance->RealTimePlayback;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RealTimePlaybackSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->RealTimePlayback = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProtectionManagerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        ::Windows::Media::Protection::MediaProtectionManager^ result = wrapper->_instance->ProtectionManager;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Media.Protection", "MediaProtectionManager", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProtectionManagerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Media::Protection::MediaProtectionManager^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try {

        ::Windows::Media::Protection::MediaProtectionManager^ winRtValue = dynamic_cast<::Windows::Media::Protection::MediaProtectionManager^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ProtectionManager = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PosterSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ImageSource^ result = wrapper->_instance->PosterSource;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "ImageSource", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PosterSourceSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::ImageSource^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ImageSource^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::ImageSource^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->PosterSource = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PositionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        ::Windows::Foundation::TimeSpan result = wrapper->_instance->Position;
        info.GetReturnValue().Set(Nan::New<Number>(result.Duration/10000.0));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PositionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try {

        ::Windows::Foundation::TimeSpan winRtValue = NodeRT::Utils::TimeSpanFromMilli(Nan::To<int64_t>(value).FromMaybe(0));

        wrapper->_instance->Position = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DownloadProgressOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        double result = wrapper->_instance->DownloadProgressOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAudioOnlyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAudioOnly;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsStereo3DVideoGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsStereo3DVideo;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarkersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::TimelineMarkerCollection^ result = wrapper->_instance->Markers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "TimelineMarkerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NaturalDurationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Duration result = wrapper->_instance->NaturalDuration;
        info.GetReturnValue().Set(DurationToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NaturalVideoHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        int result = wrapper->_instance->NaturalVideoHeight;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NaturalVideoWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        int result = wrapper->_instance->NaturalVideoWidth;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PlayToSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        ::Windows::Media::PlayTo::PlayToSource^ result = wrapper->_instance->PlayToSource;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Media.PlayTo", "PlayToSource", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AspectRatioHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        int result = wrapper->_instance->AspectRatioHeight;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AspectRatioWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        int result = wrapper->_instance->AspectRatioWidth;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualStereo3DVideoPackingModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Stereo3DVideoPackingMode result = wrapper->_instance->ActualStereo3DVideoPackingMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AudioStreamCountGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        int result = wrapper->_instance->AudioStreamCount;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BufferingProgressGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        double result = wrapper->_instance->BufferingProgress;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanPauseGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanPause;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanSeekGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanSeek;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CurrentStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::MediaElementState result = wrapper->_instance->CurrentState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DownloadProgressGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        double result = wrapper->_instance->DownloadProgress;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Stretch result = wrapper->_instance->Stretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Stretch winRtValue = static_cast<::Windows::UI::Xaml::Media::Stretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Stretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PlayToPreferredSourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->PlayToPreferredSourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PlayToPreferredSourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->PlayToPreferredSourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFullWindowGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsFullWindow;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFullWindowSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFullWindow = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AreTransportControlsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        bool result = wrapper->_instance->AreTransportControlsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AreTransportControlsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AreTransportControlsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransportControlsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::MediaTransportControls^ result = wrapper->_instance->TransportControls;
        info.GetReturnValue().Set(WrapMediaTransportControls(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransportControlsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This())) {
        return;
      }

      MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::MediaTransportControls^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::MediaTransportControls^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->TransportControls = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void AspectRatioHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::AspectRatioHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualStereo3DVideoPackingModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::ActualStereo3DVideoPackingModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DownloadProgressOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::DownloadProgressOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AspectRatioWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::AspectRatioWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AudioCategoryPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::AudioCategoryProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AudioDeviceTypePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::AudioDeviceTypeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AudioStreamCountPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::AudioStreamCountProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AudioStreamIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::AudioStreamIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AutoPlayPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::AutoPlayProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BalancePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::BalanceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BufferingProgressPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::BufferingProgressProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanPausePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::CanPauseProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanSeekPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::CanSeekProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CurrentStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::CurrentStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultPlaybackRatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::DefaultPlaybackRateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DownloadProgressPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::DownloadProgressProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAudioOnlyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::IsAudioOnlyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsLoopingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::IsLoopingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsMutedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::IsMutedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsStereo3DVideoPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::IsStereo3DVideoProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NaturalDurationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::NaturalDurationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NaturalVideoHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::NaturalVideoHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NaturalVideoWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::NaturalVideoWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PlayToSourcePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::PlayToSourceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PlaybackRatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::PlaybackRateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PositionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::PositionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PosterSourcePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::PosterSourceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProtectionManagerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::ProtectionManagerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RealTimePlaybackPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::RealTimePlaybackProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SourcePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::SourceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Stereo3DVideoPackingModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::Stereo3DVideoPackingModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Stereo3DVideoRenderModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::Stereo3DVideoRenderModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VolumePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::VolumeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFullWindowPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::IsFullWindowProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PlayToPreferredSourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::PlayToPreferredSourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::StretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AreTransportControlsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaElement::AreTransportControlsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"bufferingProgressChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->BufferingProgressChanged::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"currentStateChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->CurrentStateChanged::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"downloadProgressChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DownloadProgressChanged::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"markerReached", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->MarkerReached::add(
            ref new ::Windows::UI::Xaml::Media::TimelineMarkerRoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Media::TimelineMarkerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "TimelineMarkerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"mediaEnded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->MediaEnded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"mediaFailed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->MediaFailed::add(
            ref new ::Windows::UI::Xaml::ExceptionRoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::ExceptionRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ExceptionRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"mediaOpened", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->MediaOpened::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rateChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RateChanged::add(
            ref new ::Windows::UI::Xaml::Media::RateChangedRoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Media::RateChangedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RateChangedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"seekCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SeekCompleted::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"volumeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->VolumeChanged::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"partialMediaFailureDetected", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PartialMediaFailureDetected::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::MediaElement^, ::Windows::UI::Xaml::Media::PartialMediaFailureDetectedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::MediaElement^ arg0, ::Windows::UI::Xaml::Media::PartialMediaFailureDetectedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapMediaElement(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "PartialMediaFailureDetectedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"bufferingProgressChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"currentStateChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"downloadProgressChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"markerReached", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"mediaEnded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"mediaFailed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"mediaOpened", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rateChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"seekCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"volumeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"partialMediaFailureDetected", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"bufferingProgressChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->BufferingProgressChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"currentStateChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->CurrentStateChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"downloadProgressChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->DownloadProgressChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"markerReached", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->MarkerReached::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"mediaEnded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->MediaEnded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"mediaFailed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->MediaFailed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"mediaOpened", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->MediaOpened::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rateChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->RateChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"seekCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->SeekCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"volumeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->VolumeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"partialMediaFailureDetected", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->PartialMediaFailureDetected::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaElement *wrapper = MediaElement::Unwrap<MediaElement>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::MediaElement^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapMediaElement(::Windows::UI::Xaml::Controls::MediaElement^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::MediaElement^ UnwrapMediaElement(Local<Value> value);
  };

  Persistent<FunctionTemplate> MediaElement::s_constructorTemplate;

  v8::Local<v8::Value> WrapMediaElement(::Windows::UI::Xaml::Controls::MediaElement^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(MediaElement::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::MediaElement^ UnwrapMediaElement(Local<Value> value) {
     return MediaElement::Unwrap<MediaElement>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitMediaElement(Local<Object> exports) {
    MediaElement::Init(exports);
  }

  class MediaPlayerPresenter : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("MediaPlayerPresenter").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("stretch").ToLocalChecked(), StretchGetter, StretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("mediaPlayer").ToLocalChecked(), MediaPlayerGetter, MediaPlayerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFullWindow").ToLocalChecked(), IsFullWindowGetter, IsFullWindowSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isFullWindowProperty").ToLocalChecked(), IsFullWindowPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("mediaPlayerProperty").ToLocalChecked(), MediaPlayerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("stretchProperty").ToLocalChecked(), StretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("MediaPlayerPresenter").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      MediaPlayerPresenter(::Windows::UI::Xaml::Controls::MediaPlayerPresenter^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::MediaPlayerPresenter^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::MediaPlayerPresenter^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::MediaPlayerPresenter();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      MediaPlayerPresenter *wrapperInstance = new MediaPlayerPresenter(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::MediaPlayerPresenter^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::MediaPlayerPresenter^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapMediaPlayerPresenter(winRtInstance));
    }





    static void StretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This())) {
        return;
      }

      MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Stretch result = wrapper->_instance->Stretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This())) {
        return;
      }

      MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Stretch winRtValue = static_cast<::Windows::UI::Xaml::Media::Stretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Stretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MediaPlayerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This())) {
        return;
      }

      MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());

      try  {
        ::Windows::Media::Playback::MediaPlayer^ result = wrapper->_instance->MediaPlayer;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Media.Playback", "MediaPlayer", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MediaPlayerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Media::Playback::MediaPlayer^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This())) {
        return;
      }

      MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());

      try {

        ::Windows::Media::Playback::MediaPlayer^ winRtValue = dynamic_cast<::Windows::Media::Playback::MediaPlayer^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->MediaPlayer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFullWindowGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This())) {
        return;
      }

      MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());

      try  {
        bool result = wrapper->_instance->IsFullWindow;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFullWindowSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This())) {
        return;
      }

      MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFullWindow = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsFullWindowPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaPlayerPresenter::IsFullWindowProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MediaPlayerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaPlayerPresenter::MediaPlayerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaPlayerPresenter::StretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerPresenter *wrapper = MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::MediaPlayerPresenter^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapMediaPlayerPresenter(::Windows::UI::Xaml::Controls::MediaPlayerPresenter^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::MediaPlayerPresenter^ UnwrapMediaPlayerPresenter(Local<Value> value);
  };

  Persistent<FunctionTemplate> MediaPlayerPresenter::s_constructorTemplate;

  v8::Local<v8::Value> WrapMediaPlayerPresenter(::Windows::UI::Xaml::Controls::MediaPlayerPresenter^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(MediaPlayerPresenter::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::MediaPlayerPresenter^ UnwrapMediaPlayerPresenter(Local<Value> value) {
     return MediaPlayerPresenter::Unwrap<MediaPlayerPresenter>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitMediaPlayerPresenter(Local<Object> exports) {
    MediaPlayerPresenter::Init(exports);
  }

  class WebView : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("WebView").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);

        Local<Function> func;
        Local<FunctionTemplate> funcTemplate;

          
            Nan::SetPrototypeMethod(localRef, "navigateWithHttpRequestMessage", NavigateWithHttpRequestMessage);
            Nan::SetPrototypeMethod(localRef, "focus", Focus);
            Nan::SetPrototypeMethod(localRef, "addWebAllowedObject", AddWebAllowedObject);
            Nan::SetPrototypeMethod(localRef, "deferredPermissionRequestById", DeferredPermissionRequestById);
            Nan::SetPrototypeMethod(localRef, "invokeScript", InvokeScript);
            Nan::SetPrototypeMethod(localRef, "navigate", Navigate);
            Nan::SetPrototypeMethod(localRef, "navigateToString", NavigateToString);
            Nan::SetPrototypeMethod(localRef, "goForward", GoForward);
            Nan::SetPrototypeMethod(localRef, "goBack", GoBack);
            Nan::SetPrototypeMethod(localRef, "refresh", Refresh);
            Nan::SetPrototypeMethod(localRef, "stop", Stop);
            Nan::SetPrototypeMethod(localRef, "navigateToLocalStreamUri", NavigateToLocalStreamUri);
            Nan::SetPrototypeMethod(localRef, "buildLocalStreamUri", BuildLocalStreamUri);
          

          
            Nan::SetPrototypeMethod(localRef, "capturePreviewToStreamAsync", CapturePreviewToStreamAsync);
            Nan::SetPrototypeMethod(localRef, "invokeScriptAsync", InvokeScriptAsync);
            Nan::SetPrototypeMethod(localRef, "captureSelectedContentToDataPackageAsync", CaptureSelectedContentToDataPackageAsync);
          

          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("source").ToLocalChecked(), SourceGetter, SourceSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowedScriptNotifyUris").ToLocalChecked(), AllowedScriptNotifyUrisGetter, AllowedScriptNotifyUrisSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataTransferPackage").ToLocalChecked(), DataTransferPackageGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultBackgroundColor").ToLocalChecked(), DefaultBackgroundColorGetter, DefaultBackgroundColorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canGoBack").ToLocalChecked(), CanGoBackGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canGoForward").ToLocalChecked(), CanGoForwardGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("documentTitle").ToLocalChecked(), DocumentTitleGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("containsFullScreenElement").ToLocalChecked(), ContainsFullScreenElementGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("deferredPermissionRequests").ToLocalChecked(), DeferredPermissionRequestsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("executionMode").ToLocalChecked(), ExecutionModeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("settings").ToLocalChecked(), SettingsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        func = Nan::GetFunction(Nan::New<FunctionTemplate>(ClearTemporaryWebDataAsync)).ToLocalChecked();
        Nan::Set(constructor, Nan::New<String>("clearTemporaryWebDataAsync").ToLocalChecked(), func);
        Nan::SetAccessor(constructor, Nan::New<String>("sourceProperty").ToLocalChecked(), SourcePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataTransferPackageProperty").ToLocalChecked(), DataTransferPackagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("anyScriptNotifyUri").ToLocalChecked(), AnyScriptNotifyUriGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowedScriptNotifyUrisProperty").ToLocalChecked(), AllowedScriptNotifyUrisPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("documentTitleProperty").ToLocalChecked(), DocumentTitlePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canGoBackProperty").ToLocalChecked(), CanGoBackPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canGoForwardProperty").ToLocalChecked(), CanGoForwardPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultBackgroundColorProperty").ToLocalChecked(), DefaultBackgroundColorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("containsFullScreenElementProperty").ToLocalChecked(), ContainsFullScreenElementPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultExecutionMode").ToLocalChecked(), DefaultExecutionModeGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("WebView").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      WebView(::Windows::UI::Xaml::Controls::WebView^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::WebView^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::WebView^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 1
        && info[0]->IsInt32())
      {
        try {
          ::Windows::UI::Xaml::Controls::WebViewExecutionMode arg0 = static_cast<::Windows::UI::Xaml::Controls::WebViewExecutionMode>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::WebView(arg0);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::WebView();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      WebView *wrapperInstance = new WebView(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::WebView^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::WebView^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapWebView(winRtInstance));
    }

    static void CapturePreviewToStreamAsync(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      if (info.Length() == 0 || !info[info.Length() -1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: No callback was given")));
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      ::Windows::Foundation::IAsyncAction^ op;


      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::Storage::Streams::IRandomAccessStream^>(info[0]))
      {
        try
        {
          ::Windows::Storage::Streams::IRandomAccessStream^ arg0 = dynamic_cast<::Windows::Storage::Streams::IRandomAccessStream^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          op = wrapper->_instance->CapturePreviewToStreamAsync(arg0);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }

      auto opTask = create_task(op);
      uv_async_t* asyncToken = NodeUtils::Async::GetAsyncToken(info[info.Length() -1].As<Function>());

      opTask.then( [asyncToken] (task<void> t) {
        try {
          t.get();
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [](NodeUtils::InvokeCallbackDelegate invokeCallback) {


            Local<Value> args[] = {Undefined()};


            invokeCallback(_countof(args), args);
          });
        } catch (Platform::Exception^ exception) {
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [exception](NodeUtils::InvokeCallbackDelegate invokeCallback) {
            Local<Value> error = NodeRT::Utils::WinRtExceptionToJsError(exception);

            Local<Value> args[] = {error};
            invokeCallback(_countof(args), args);
          });
        }
      });
    }
    static void InvokeScriptAsync(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      if (info.Length() == 0 || !info[info.Length() -1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: No callback was given")));
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      ::Windows::Foundation::IAsyncOperation<::Platform::String^>^ op;


      if (info.Length() == 3
        && info[0]->IsString()
        && (NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Collections::IIterable<::Platform::String^>^>(info[1]) || info[1]->IsArray()))
      {
        try
        {
          Platform::String^ arg0 = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), info[0])));
          ::Windows::Foundation::Collections::IIterable<::Platform::String^>^ arg1 = 
            [] (v8::Local<v8::Value> value) -> ::Windows::Foundation::Collections::IIterable<::Platform::String^>^
            {
              if (value->IsArray())
              {
                return NodeRT::Collections::JsArrayToWinrtVector<::Platform::String^>(value.As<Array>(), 
                 [](Local<Value> value) -> bool {
                   return (!NodeRT::Utils::IsWinRtWrapper(value));
                 },
                 [](Local<Value> value) -> ::Platform::String^ {
                   return ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));
                 }
                );
              }
              else
              {
                return dynamic_cast<::Windows::Foundation::Collections::IIterable<::Platform::String^>^>(NodeRT::Utils::GetObjectInstance(value));
              }
            } (info[1]);
          
          op = wrapper->_instance->InvokeScriptAsync(arg0,arg1);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }

      auto opTask = create_task(op);
      uv_async_t* asyncToken = NodeUtils::Async::GetAsyncToken(info[info.Length() -1].As<Function>());

      opTask.then( [asyncToken] (task<::Platform::String^> t) {
        try {
          auto result = t.get();
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [result](NodeUtils::InvokeCallbackDelegate invokeCallback) {


            Local<Value> error;
            Local<Value> arg1;
            {
              TryCatch tryCatch;
              arg1 = NodeRT::Utils::NewString(result->Data());
              if (tryCatch.HasCaught())
              {
                error = Nan::To<Object>(tryCatch.Exception()).ToLocalChecked();
              }
              else
              {
                error = Undefined();
              }
              if (arg1.IsEmpty()) arg1 = Undefined();
            }
            Local<Value> args[] = {error, arg1};


            invokeCallback(_countof(args), args);
          });
        } catch (Platform::Exception^ exception) {
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [exception](NodeUtils::InvokeCallbackDelegate invokeCallback) {
            Local<Value> error = NodeRT::Utils::WinRtExceptionToJsError(exception);

            Local<Value> args[] = {error};
            invokeCallback(_countof(args), args);
          });
        }
      });
    }
    static void CaptureSelectedContentToDataPackageAsync(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      if (info.Length() == 0 || !info[info.Length() -1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: No callback was given")));
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      ::Windows::Foundation::IAsyncOperation<::Windows::ApplicationModel::DataTransfer::DataPackage^>^ op;


      if (info.Length() == 1)
      {
        try
        {
          op = wrapper->_instance->CaptureSelectedContentToDataPackageAsync();
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }

      auto opTask = create_task(op);
      uv_async_t* asyncToken = NodeUtils::Async::GetAsyncToken(info[info.Length() -1].As<Function>());

      opTask.then( [asyncToken] (task<::Windows::ApplicationModel::DataTransfer::DataPackage^> t) {
        try {
          auto result = t.get();
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [result](NodeUtils::InvokeCallbackDelegate invokeCallback) {


            Local<Value> error;
            Local<Value> arg1;
            {
              TryCatch tryCatch;
              arg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.DataTransfer", "DataPackage", result);
              if (tryCatch.HasCaught())
              {
                error = Nan::To<Object>(tryCatch.Exception()).ToLocalChecked();
              }
              else
              {
                error = Undefined();
              }
              if (arg1.IsEmpty()) arg1 = Undefined();
            }
            Local<Value> args[] = {error, arg1};


            invokeCallback(_countof(args), args);
          });
        } catch (Platform::Exception^ exception) {
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [exception](NodeUtils::InvokeCallbackDelegate invokeCallback) {
            Local<Value> error = NodeRT::Utils::WinRtExceptionToJsError(exception);

            Local<Value> args[] = {error};
            invokeCallback(_countof(args), args);
          });
        }
      });
    }

    static void NavigateWithHttpRequestMessage(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::Web::Http::HttpRequestMessage^>(info[0]))
      {
        try
        {
          ::Windows::Web::Http::HttpRequestMessage^ arg0 = dynamic_cast<::Windows::Web::Http::HttpRequestMessage^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->NavigateWithHttpRequestMessage(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Focus(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      if (info.Length() == 1
        && info[0]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::FocusState arg0 = static_cast<::Windows::UI::Xaml::FocusState>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          
          bool result;
          result = wrapper->_instance->Focus(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void AddWebAllowedObject(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      if (info.Length() == 2
        && info[0]->IsString()
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1]))
      {
        try
        {
          Platform::String^ arg0 = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), info[0])));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          wrapper->_instance->AddWebAllowedObject(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void DeferredPermissionRequestById(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      if (info.Length() == 1
        && info[0]->IsUint32())
      {
        try
        {
          unsigned int arg0 = static_cast<unsigned int>(Nan::To<uint32_t>(info[0]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^ result;
          result = wrapper->_instance->DeferredPermissionRequestById(arg0);
          info.GetReturnValue().Set(WrapWebViewDeferredPermissionRequest(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void InvokeScript(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      if (info.Length() == 2
        && info[0]->IsString()
        && (NodeRT::Utils::IsWinRtWrapperOf<::Platform::Array<::Platform::String^>^>(info[1]) || info[1]->IsArray()))
      {
        try
        {
          Platform::String^ arg0 = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), info[0])));
          ::Platform::Array<::Platform::String^>^ arg1 = 
            [] (v8::Local<v8::Value> value) -> ::Platform::Array<::Platform::String^>^
            {
              if (value->IsArray())
              {
                return NodeRT::Collections::JsArrayToWinrtArray<::Platform::String^>(value.As<Array>(), 
                 [](Local<Value> value) -> bool {
                   return (!NodeRT::Utils::IsWinRtWrapper(value));
                 },
                 [](Local<Value> value) -> ::Platform::String^ {
                   return ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));
                 }
                );
              }
              else
              {
                return dynamic_cast<::Platform::Array<::Platform::String^>^>(NodeRT::Utils::GetObjectInstance(value));
              }
            } (info[1]);
          
          Platform::String^ result;
          result = wrapper->_instance->InvokeScript(arg0, arg1);
          info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Navigate(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(info[0]))
      {
        try
        {
          ::Windows::Foundation::Uri^ arg0 = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->Navigate(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void NavigateToString(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      if (info.Length() == 1
        && info[0]->IsString())
      {
        try
        {
          Platform::String^ arg0 = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), info[0])));
          
          wrapper->_instance->NavigateToString(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GoForward(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->GoForward();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GoBack(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->GoBack();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Refresh(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->Refresh();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Stop(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->Stop();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void NavigateToLocalStreamUri(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::Web::IUriToStreamResolver^>(info[1]))
      {
        try
        {
          ::Windows::Foundation::Uri^ arg0 = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::Web::IUriToStreamResolver^ arg1 = dynamic_cast<::Windows::Web::IUriToStreamResolver^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          wrapper->_instance->NavigateToLocalStreamUri(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void BuildLocalStreamUri(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      if (info.Length() == 2
        && info[0]->IsString()
        && info[1]->IsString())
      {
        try
        {
          Platform::String^ arg0 = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), info[0])));
          Platform::String^ arg1 = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), info[1])));
          
          ::Windows::Foundation::Uri^ result;
          result = wrapper->_instance->BuildLocalStreamUri(arg0, arg1);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }


    static void ClearTemporaryWebDataAsync(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 0 || !info[info.Length() -1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: No callback was given")));
        return;
      }

      ::Windows::Foundation::IAsyncAction^ op;


      if (info.Length() == 1)
      {
        try
        {
          op = ::Windows::UI::Xaml::Controls::WebView::ClearTemporaryWebDataAsync();
        } catch (Platform::Exception ^exception) {
            NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
            return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }

      auto opTask = create_task(op);
      uv_async_t* asyncToken = NodeUtils::Async::GetAsyncToken(info[info.Length() -1].As<Function>());

      opTask.then( [asyncToken] (task<void> t)
      {
        try {
          t.get();
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [](NodeUtils::InvokeCallbackDelegate invokeCallback) {


                Local<Value> args[] = {Undefined()};


            invokeCallback(_countof(args), args);
          });
        }
        catch (Platform::Exception^ exception)
        {
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [exception](NodeUtils::InvokeCallbackDelegate invokeCallback) {

            Local<Value> error = NodeRT::Utils::WinRtExceptionToJsError(exception);

            Local<Value> args[] = {error};
            invokeCallback(_countof(args), args);
          });
        }
      });
    }


    static void SourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->Source;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SourceSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Source = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowedScriptNotifyUrisGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::Foundation::Uri^>^ result = wrapper->_instance->AllowedScriptNotifyUris;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::Foundation::Uri^>::CreateVectorWrapper(result, 
            [](::Windows::Foundation::Uri^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value);
            },
            [](Local<Value> value) -> ::Windows::Foundation::Uri^ {
              return dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowedScriptNotifyUrisSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!(NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Collections::IVector<::Windows::Foundation::Uri^>^>(value) || value->IsArray())) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      try {

        ::Windows::Foundation::Collections::IVector<::Windows::Foundation::Uri^>^ winRtValue = 
            [] (v8::Local<v8::Value> value) -> ::Windows::Foundation::Collections::IVector<::Windows::Foundation::Uri^>^
            {
              if (value->IsArray())
              {
                return NodeRT::Collections::JsArrayToWinrtVector<::Windows::Foundation::Uri^>(value.As<Array>(), 
                 [](Local<Value> value) -> bool {
                   return NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value);
                 },
                 [](Local<Value> value) -> ::Windows::Foundation::Uri^ {
                   return dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));
                 }
                );
              }
              else
              {
                return dynamic_cast<::Windows::Foundation::Collections::IVector<::Windows::Foundation::Uri^>^>(NodeRT::Utils::GetObjectInstance(value));
              }
            } (value);

        wrapper->_instance->AllowedScriptNotifyUris = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataTransferPackageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      try  {
        ::Windows::ApplicationModel::DataTransfer::DataPackage^ result = wrapper->_instance->DataTransferPackage;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.DataTransfer", "DataPackage", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultBackgroundColorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      try  {
        ::Windows::UI::Color result = wrapper->_instance->DefaultBackgroundColor;
        info.GetReturnValue().Set(NodeRT::Utils::ColorToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultBackgroundColorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsColor(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      try {

        ::Windows::UI::Color winRtValue = NodeRT::Utils::ColorFromJs(value);

        wrapper->_instance->DefaultBackgroundColor = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanGoBackGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      try  {
        bool result = wrapper->_instance->CanGoBack;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanGoForwardGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      try  {
        bool result = wrapper->_instance->CanGoForward;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DocumentTitleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->DocumentTitle;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContainsFullScreenElementGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      try  {
        bool result = wrapper->_instance->ContainsFullScreenElement;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DeferredPermissionRequestsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^>^ result = wrapper->_instance->DeferredPermissionRequests;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^ val) -> Local<Value> {
              return WrapWebViewDeferredPermissionRequest(val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest^ {
              return UnwrapWebViewDeferredPermissionRequest(value);
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExecutionModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::WebViewExecutionMode result = wrapper->_instance->ExecutionMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SettingsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::WebViewSettings^ result = wrapper->_instance->Settings;
        info.GetReturnValue().Set(WrapWebViewSettings(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This())) {
        return;
      }

      WebView *wrapper = WebView::Unwrap<WebView>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void SourcePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::WebView::SourceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataTransferPackagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::WebView::DataTransferPackageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AnyScriptNotifyUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::Foundation::Collections::IVector<::Windows::Foundation::Uri^>^ result = ::Windows::UI::Xaml::Controls::WebView::AnyScriptNotifyUri;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::Foundation::Uri^>::CreateVectorWrapper(result, 
            [](::Windows::Foundation::Uri^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value);
            },
            [](Local<Value> value) -> ::Windows::Foundation::Uri^ {
              return dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowedScriptNotifyUrisPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::WebView::AllowedScriptNotifyUrisProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DocumentTitlePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::WebView::DocumentTitleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanGoBackPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::WebView::CanGoBackProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanGoForwardPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::WebView::CanGoForwardProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultBackgroundColorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::WebView::DefaultBackgroundColorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContainsFullScreenElementPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::WebView::ContainsFullScreenElementProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultExecutionModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::Controls::WebViewExecutionMode result = ::Windows::UI::Xaml::Controls::WebView::DefaultExecutionMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::WebView::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::WebView::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::WebView::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::WebView::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"loadCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LoadCompleted::add(
            ref new ::Windows::UI::Xaml::Navigation::LoadCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Navigation::NavigationEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Navigation", "NavigationEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"navigationFailed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NavigationFailed::add(
            ref new ::Windows::UI::Xaml::Controls::WebViewNavigationFailedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::WebViewNavigationFailedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapWebViewNavigationFailedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"scriptNotify", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ScriptNotify::add(
            ref new ::Windows::UI::Xaml::Controls::NotifyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::NotifyEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapNotifyEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contentLoading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContentLoading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::WebView^, ::Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::WebView^ arg0, ::Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapWebView(arg0);
                  wrappedArg1 = WrapWebViewContentLoadingEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dOMContentLoaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DOMContentLoaded::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::WebView^, ::Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::WebView^ arg0, ::Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapWebView(arg0);
                  wrappedArg1 = WrapWebViewDOMContentLoadedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"frameContentLoading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FrameContentLoading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::WebView^, ::Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::WebView^ arg0, ::Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapWebView(arg0);
                  wrappedArg1 = WrapWebViewContentLoadingEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"frameDOMContentLoaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FrameDOMContentLoaded::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::WebView^, ::Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::WebView^ arg0, ::Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapWebView(arg0);
                  wrappedArg1 = WrapWebViewDOMContentLoadedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"frameNavigationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FrameNavigationCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::WebView^, ::Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::WebView^ arg0, ::Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapWebView(arg0);
                  wrappedArg1 = WrapWebViewNavigationCompletedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"frameNavigationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FrameNavigationStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::WebView^, ::Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::WebView^ arg0, ::Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapWebView(arg0);
                  wrappedArg1 = WrapWebViewNavigationStartingEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"longRunningScriptDetected", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LongRunningScriptDetected::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::WebView^, ::Windows::UI::Xaml::Controls::WebViewLongRunningScriptDetectedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::WebView^ arg0, ::Windows::UI::Xaml::Controls::WebViewLongRunningScriptDetectedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapWebView(arg0);
                  wrappedArg1 = WrapWebViewLongRunningScriptDetectedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"navigationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NavigationCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::WebView^, ::Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::WebView^ arg0, ::Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapWebView(arg0);
                  wrappedArg1 = WrapWebViewNavigationCompletedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"navigationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NavigationStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::WebView^, ::Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::WebView^ arg0, ::Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapWebView(arg0);
                  wrappedArg1 = WrapWebViewNavigationStartingEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unsafeContentWarningDisplaying", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->UnsafeContentWarningDisplaying::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::WebView^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::WebView^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapWebView(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unviewableContentIdentified", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->UnviewableContentIdentified::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::WebView^, ::Windows::UI::Xaml::Controls::WebViewUnviewableContentIdentifiedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::WebView^ arg0, ::Windows::UI::Xaml::Controls::WebViewUnviewableContentIdentifiedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapWebView(arg0);
                  wrappedArg1 = WrapWebViewUnviewableContentIdentifiedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"containsFullScreenElementChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContainsFullScreenElementChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::WebView^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::WebView^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapWebView(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"newWindowRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NewWindowRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::WebView^, ::Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::WebView^ arg0, ::Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapWebView(arg0);
                  wrappedArg1 = WrapWebViewNewWindowRequestedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"permissionRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PermissionRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::WebView^, ::Windows::UI::Xaml::Controls::WebViewPermissionRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::WebView^ arg0, ::Windows::UI::Xaml::Controls::WebViewPermissionRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapWebView(arg0);
                  wrappedArg1 = WrapWebViewPermissionRequestedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unsupportedUriSchemeIdentified", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->UnsupportedUriSchemeIdentified::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::WebView^, ::Windows::UI::Xaml::Controls::WebViewUnsupportedUriSchemeIdentifiedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::WebView^ arg0, ::Windows::UI::Xaml::Controls::WebViewUnsupportedUriSchemeIdentifiedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapWebView(arg0);
                  wrappedArg1 = WrapWebViewUnsupportedUriSchemeIdentifiedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WebView *wrapper = WebView::Unwrap<WebView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"loadCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"navigationFailed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"scriptNotify", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contentLoading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dOMContentLoaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"frameContentLoading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"frameDOMContentLoaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"frameNavigationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"frameNavigationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"longRunningScriptDetected", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"navigationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"navigationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unsafeContentWarningDisplaying", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unviewableContentIdentified", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"containsFullScreenElementChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"newWindowRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"permissionRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unsupportedUriSchemeIdentified", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"loadCompleted", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->LoadCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"navigationFailed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->NavigationFailed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"scriptNotify", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->ScriptNotify::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contentLoading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->ContentLoading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dOMContentLoaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->DOMContentLoaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"frameContentLoading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->FrameContentLoading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"frameDOMContentLoaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->FrameDOMContentLoaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"frameNavigationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->FrameNavigationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"frameNavigationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->FrameNavigationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"longRunningScriptDetected", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->LongRunningScriptDetected::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"navigationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->NavigationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"navigationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->NavigationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unsafeContentWarningDisplaying", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->UnsafeContentWarningDisplaying::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unviewableContentIdentified", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->UnviewableContentIdentified::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"containsFullScreenElementChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->ContainsFullScreenElementChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"newWindowRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->NewWindowRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"permissionRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->PermissionRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unsupportedUriSchemeIdentified", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->UnsupportedUriSchemeIdentified::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WebView *wrapper = WebView::Unwrap<WebView>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::WebView^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapWebView(::Windows::UI::Xaml::Controls::WebView^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::WebView^ UnwrapWebView(Local<Value> value);
  };

  Persistent<FunctionTemplate> WebView::s_constructorTemplate;

  v8::Local<v8::Value> WrapWebView(::Windows::UI::Xaml::Controls::WebView^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(WebView::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::WebView^ UnwrapWebView(Local<Value> value) {
     return WebView::Unwrap<WebView>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitWebView(Local<Object> exports) {
    WebView::Init(exports);
  }

  class BitmapIcon : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("BitmapIcon").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("uriSource").ToLocalChecked(), UriSourceGetter, UriSourceSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("showAsMonochrome").ToLocalChecked(), ShowAsMonochromeGetter, ShowAsMonochromeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("uriSourceProperty").ToLocalChecked(), UriSourcePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("showAsMonochromeProperty").ToLocalChecked(), ShowAsMonochromePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("BitmapIcon").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      BitmapIcon(::Windows::UI::Xaml::Controls::BitmapIcon^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::BitmapIcon^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::BitmapIcon^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::BitmapIcon();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      BitmapIcon *wrapperInstance = new BitmapIcon(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::BitmapIcon^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::BitmapIcon^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapBitmapIcon(winRtInstance));
    }





    static void UriSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This())) {
        return;
      }

      BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->UriSource;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UriSourceSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This())) {
        return;
      }

      BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->UriSource = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ShowAsMonochromeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This())) {
        return;
      }

      BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());

      try  {
        bool result = wrapper->_instance->ShowAsMonochrome;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ShowAsMonochromeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This())) {
        return;
      }

      BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ShowAsMonochrome = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This())) {
        return;
      }

      IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This())) {
        return;
      }

      IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void UriSourcePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::BitmapIcon::UriSourceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ShowAsMonochromePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::BitmapIcon::ShowAsMonochromeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::IconElement::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::BitmapIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          BitmapIcon *wrapper = BitmapIcon::Unwrap<BitmapIcon>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::BitmapIcon^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapBitmapIcon(::Windows::UI::Xaml::Controls::BitmapIcon^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::BitmapIcon^ UnwrapBitmapIcon(Local<Value> value);
  };

  Persistent<FunctionTemplate> BitmapIcon::s_constructorTemplate;

  v8::Local<v8::Value> WrapBitmapIcon(::Windows::UI::Xaml::Controls::BitmapIcon^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(BitmapIcon::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::BitmapIcon^ UnwrapBitmapIcon(Local<Value> value) {
     return BitmapIcon::Unwrap<BitmapIcon>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitBitmapIcon(Local<Object> exports) {
    BitmapIcon::Init(exports);
  }

  class FontIcon : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("FontIcon").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("glyph").ToLocalChecked(), GlyphGetter, GlyphSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("mirroredWhenRightToLeft").ToLocalChecked(), MirroredWhenRightToLeftGetter, MirroredWhenRightToLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("glyphProperty").ToLocalChecked(), GlyphPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("mirroredWhenRightToLeftProperty").ToLocalChecked(), MirroredWhenRightToLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("FontIcon").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      FontIcon(::Windows::UI::Xaml::Controls::FontIcon^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::FontIcon^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::FontIcon^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::FontIcon();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      FontIcon *wrapperInstance = new FontIcon(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::FontIcon^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::FontIcon^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapFontIcon(winRtInstance));
    }





    static void GlyphGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This())) {
        return;
      }

      FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Glyph;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GlyphSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This())) {
        return;
      }

      FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Glyph = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This())) {
        return;
      }

      FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This())) {
        return;
      }

      FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This())) {
        return;
      }

      FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This())) {
        return;
      }

      FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This())) {
        return;
      }

      FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This())) {
        return;
      }

      FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This())) {
        return;
      }

      FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This())) {
        return;
      }

      FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This())) {
        return;
      }

      FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This())) {
        return;
      }

      FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MirroredWhenRightToLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This())) {
        return;
      }

      FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());

      try  {
        bool result = wrapper->_instance->MirroredWhenRightToLeft;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MirroredWhenRightToLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This())) {
        return;
      }

      FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->MirroredWhenRightToLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This())) {
        return;
      }

      IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This())) {
        return;
      }

      IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::FontIcon::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::FontIcon::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::FontIcon::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::FontIcon::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GlyphPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::FontIcon::GlyphProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::FontIcon::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MirroredWhenRightToLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::FontIcon::MirroredWhenRightToLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::IconElement::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FontIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FontIcon *wrapper = FontIcon::Unwrap<FontIcon>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::FontIcon^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapFontIcon(::Windows::UI::Xaml::Controls::FontIcon^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::FontIcon^ UnwrapFontIcon(Local<Value> value);
  };

  Persistent<FunctionTemplate> FontIcon::s_constructorTemplate;

  v8::Local<v8::Value> WrapFontIcon(::Windows::UI::Xaml::Controls::FontIcon^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(FontIcon::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::FontIcon^ UnwrapFontIcon(Local<Value> value) {
     return FontIcon::Unwrap<FontIcon>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitFontIcon(Local<Object> exports) {
    FontIcon::Init(exports);
  }

  class ItemsStackPanel : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ItemsStackPanel").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupHeaderPlacement").ToLocalChecked(), GroupHeaderPlacementGetter, GroupHeaderPlacementSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsUpdatingScrollMode").ToLocalChecked(), ItemsUpdatingScrollModeGetter, ItemsUpdatingScrollModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupPadding").ToLocalChecked(), GroupPaddingGetter, GroupPaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheLength").ToLocalChecked(), CacheLengthGetter, CacheLengthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("orientation").ToLocalChecked(), OrientationGetter, OrientationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("firstCacheIndex").ToLocalChecked(), FirstCacheIndexGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("firstVisibleIndex").ToLocalChecked(), FirstVisibleIndexGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lastCacheIndex").ToLocalChecked(), LastCacheIndexGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lastVisibleIndex").ToLocalChecked(), LastVisibleIndexGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("scrollingDirection").ToLocalChecked(), ScrollingDirectionGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("areStickyGroupHeadersEnabled").ToLocalChecked(), AreStickyGroupHeadersEnabledGetter, AreStickyGroupHeadersEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("childrenTransitions").ToLocalChecked(), ChildrenTransitionsGetter, ChildrenTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("children").ToLocalChecked(), ChildrenGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isItemsHost").ToLocalChecked(), IsItemsHostGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("cacheLengthProperty").ToLocalChecked(), CacheLengthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("groupHeaderPlacementProperty").ToLocalChecked(), GroupHeaderPlacementPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("groupPaddingProperty").ToLocalChecked(), GroupPaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("orientationProperty").ToLocalChecked(), OrientationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("areStickyGroupHeadersEnabledProperty").ToLocalChecked(), AreStickyGroupHeadersEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("childrenTransitionsProperty").ToLocalChecked(), ChildrenTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isItemsHostProperty").ToLocalChecked(), IsItemsHostPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ItemsStackPanel").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ItemsStackPanel(::Windows::UI::Xaml::Controls::ItemsStackPanel^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ItemsStackPanel^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ItemsStackPanel^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ItemsStackPanel();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ItemsStackPanel *wrapperInstance = new ItemsStackPanel(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ItemsStackPanel^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ItemsStackPanel^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapItemsStackPanel(winRtInstance));
    }





    static void GroupHeaderPlacementGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This())) {
        return;
      }

      ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::GroupHeaderPlacement result = wrapper->_instance->GroupHeaderPlacement;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupHeaderPlacementSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This())) {
        return;
      }

      ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::GroupHeaderPlacement winRtValue = static_cast<::Windows::UI::Xaml::Controls::Primitives::GroupHeaderPlacement>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->GroupHeaderPlacement = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemsUpdatingScrollModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This())) {
        return;
      }

      ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemsUpdatingScrollMode result = wrapper->_instance->ItemsUpdatingScrollMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsUpdatingScrollModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This())) {
        return;
      }

      ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ItemsUpdatingScrollMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ItemsUpdatingScrollMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ItemsUpdatingScrollMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void GroupPaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This())) {
        return;
      }

      ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->GroupPadding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupPaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This())) {
        return;
      }

      ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->GroupPadding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheLengthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This())) {
        return;
      }

      ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());

      try  {
        double result = wrapper->_instance->CacheLength;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheLengthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This())) {
        return;
      }

      ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->CacheLength = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OrientationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This())) {
        return;
      }

      ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Orientation result = wrapper->_instance->Orientation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OrientationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This())) {
        return;
      }

      ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Orientation winRtValue = static_cast<::Windows::UI::Xaml::Controls::Orientation>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Orientation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FirstCacheIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This())) {
        return;
      }

      ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());

      try  {
        int result = wrapper->_instance->FirstCacheIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FirstVisibleIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This())) {
        return;
      }

      ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());

      try  {
        int result = wrapper->_instance->FirstVisibleIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LastCacheIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This())) {
        return;
      }

      ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());

      try  {
        int result = wrapper->_instance->LastCacheIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LastVisibleIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This())) {
        return;
      }

      ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());

      try  {
        int result = wrapper->_instance->LastVisibleIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ScrollingDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This())) {
        return;
      }

      ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::PanelScrollingDirection result = wrapper->_instance->ScrollingDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AreStickyGroupHeadersEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This())) {
        return;
      }

      ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());

      try  {
        bool result = wrapper->_instance->AreStickyGroupHeadersEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AreStickyGroupHeadersEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This())) {
        return;
      }

      ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AreStickyGroupHeadersEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildrenTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ChildrenTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ChildrenTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ChildrenTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildrenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::UIElementCollection^ result = wrapper->_instance->Children;
        info.GetReturnValue().Set(WrapUIElementCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsItemsHostGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        bool result = wrapper->_instance->IsItemsHost;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void CacheLengthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsStackPanel::CacheLengthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GroupHeaderPlacementPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsStackPanel::GroupHeaderPlacementProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GroupPaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsStackPanel::GroupPaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OrientationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsStackPanel::OrientationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AreStickyGroupHeadersEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsStackPanel::AreStickyGroupHeadersEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ChildrenTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::ChildrenTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsItemsHostPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::IsItemsHostProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsStackPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsStackPanel *wrapper = ItemsStackPanel::Unwrap<ItemsStackPanel>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ItemsStackPanel^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapItemsStackPanel(::Windows::UI::Xaml::Controls::ItemsStackPanel^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ItemsStackPanel^ UnwrapItemsStackPanel(Local<Value> value);
  };

  Persistent<FunctionTemplate> ItemsStackPanel::s_constructorTemplate;

  v8::Local<v8::Value> WrapItemsStackPanel(::Windows::UI::Xaml::Controls::ItemsStackPanel^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ItemsStackPanel::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ItemsStackPanel^ UnwrapItemsStackPanel(Local<Value> value) {
     return ItemsStackPanel::Unwrap<ItemsStackPanel>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitItemsStackPanel(Local<Object> exports) {
    ItemsStackPanel::Init(exports);
  }

  class ItemsWrapGrid : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ItemsWrapGrid").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupPadding").ToLocalChecked(), GroupPaddingGetter, GroupPaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupHeaderPlacement").ToLocalChecked(), GroupHeaderPlacementGetter, GroupHeaderPlacementSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemWidth").ToLocalChecked(), ItemWidthGetter, ItemWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemHeight").ToLocalChecked(), ItemHeightGetter, ItemHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheLength").ToLocalChecked(), CacheLengthGetter, CacheLengthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("orientation").ToLocalChecked(), OrientationGetter, OrientationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maximumRowsOrColumns").ToLocalChecked(), MaximumRowsOrColumnsGetter, MaximumRowsOrColumnsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("firstCacheIndex").ToLocalChecked(), FirstCacheIndexGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("firstVisibleIndex").ToLocalChecked(), FirstVisibleIndexGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lastCacheIndex").ToLocalChecked(), LastCacheIndexGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lastVisibleIndex").ToLocalChecked(), LastVisibleIndexGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("scrollingDirection").ToLocalChecked(), ScrollingDirectionGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("areStickyGroupHeadersEnabled").ToLocalChecked(), AreStickyGroupHeadersEnabledGetter, AreStickyGroupHeadersEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("childrenTransitions").ToLocalChecked(), ChildrenTransitionsGetter, ChildrenTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("children").ToLocalChecked(), ChildrenGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isItemsHost").ToLocalChecked(), IsItemsHostGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("cacheLengthProperty").ToLocalChecked(), CacheLengthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("groupHeaderPlacementProperty").ToLocalChecked(), GroupHeaderPlacementPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("groupPaddingProperty").ToLocalChecked(), GroupPaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemHeightProperty").ToLocalChecked(), ItemHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemWidthProperty").ToLocalChecked(), ItemWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maximumRowsOrColumnsProperty").ToLocalChecked(), MaximumRowsOrColumnsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("orientationProperty").ToLocalChecked(), OrientationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("areStickyGroupHeadersEnabledProperty").ToLocalChecked(), AreStickyGroupHeadersEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("childrenTransitionsProperty").ToLocalChecked(), ChildrenTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isItemsHostProperty").ToLocalChecked(), IsItemsHostPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ItemsWrapGrid").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ItemsWrapGrid(::Windows::UI::Xaml::Controls::ItemsWrapGrid^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ItemsWrapGrid^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ItemsWrapGrid^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ItemsWrapGrid();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ItemsWrapGrid *wrapperInstance = new ItemsWrapGrid(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ItemsWrapGrid^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ItemsWrapGrid^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapItemsWrapGrid(winRtInstance));
    }





    static void GroupPaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This())) {
        return;
      }

      ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->GroupPadding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupPaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This())) {
        return;
      }

      ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->GroupPadding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void GroupHeaderPlacementGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This())) {
        return;
      }

      ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::GroupHeaderPlacement result = wrapper->_instance->GroupHeaderPlacement;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupHeaderPlacementSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This())) {
        return;
      }

      ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::GroupHeaderPlacement winRtValue = static_cast<::Windows::UI::Xaml::Controls::Primitives::GroupHeaderPlacement>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->GroupHeaderPlacement = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This())) {
        return;
      }

      ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());

      try  {
        double result = wrapper->_instance->ItemWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This())) {
        return;
      }

      ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->ItemWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This())) {
        return;
      }

      ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());

      try  {
        double result = wrapper->_instance->ItemHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This())) {
        return;
      }

      ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->ItemHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheLengthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This())) {
        return;
      }

      ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());

      try  {
        double result = wrapper->_instance->CacheLength;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheLengthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This())) {
        return;
      }

      ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->CacheLength = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OrientationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This())) {
        return;
      }

      ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Orientation result = wrapper->_instance->Orientation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OrientationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This())) {
        return;
      }

      ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Orientation winRtValue = static_cast<::Windows::UI::Xaml::Controls::Orientation>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Orientation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaximumRowsOrColumnsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This())) {
        return;
      }

      ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());

      try  {
        int result = wrapper->_instance->MaximumRowsOrColumns;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaximumRowsOrColumnsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This())) {
        return;
      }

      ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->MaximumRowsOrColumns = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FirstCacheIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This())) {
        return;
      }

      ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());

      try  {
        int result = wrapper->_instance->FirstCacheIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FirstVisibleIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This())) {
        return;
      }

      ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());

      try  {
        int result = wrapper->_instance->FirstVisibleIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LastCacheIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This())) {
        return;
      }

      ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());

      try  {
        int result = wrapper->_instance->LastCacheIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LastVisibleIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This())) {
        return;
      }

      ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());

      try  {
        int result = wrapper->_instance->LastVisibleIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ScrollingDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This())) {
        return;
      }

      ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::PanelScrollingDirection result = wrapper->_instance->ScrollingDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AreStickyGroupHeadersEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This())) {
        return;
      }

      ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());

      try  {
        bool result = wrapper->_instance->AreStickyGroupHeadersEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AreStickyGroupHeadersEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This())) {
        return;
      }

      ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AreStickyGroupHeadersEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildrenTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ChildrenTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ChildrenTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ChildrenTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildrenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::UIElementCollection^ result = wrapper->_instance->Children;
        info.GetReturnValue().Set(WrapUIElementCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsItemsHostGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        bool result = wrapper->_instance->IsItemsHost;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void CacheLengthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsWrapGrid::CacheLengthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GroupHeaderPlacementPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsWrapGrid::GroupHeaderPlacementProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GroupPaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsWrapGrid::GroupPaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsWrapGrid::ItemHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsWrapGrid::ItemWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaximumRowsOrColumnsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsWrapGrid::MaximumRowsOrColumnsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OrientationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsWrapGrid::OrientationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AreStickyGroupHeadersEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsWrapGrid::AreStickyGroupHeadersEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ChildrenTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::ChildrenTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsItemsHostPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::IsItemsHostProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsWrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsWrapGrid *wrapper = ItemsWrapGrid::Unwrap<ItemsWrapGrid>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ItemsWrapGrid^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapItemsWrapGrid(::Windows::UI::Xaml::Controls::ItemsWrapGrid^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ItemsWrapGrid^ UnwrapItemsWrapGrid(Local<Value> value);
  };

  Persistent<FunctionTemplate> ItemsWrapGrid::s_constructorTemplate;

  v8::Local<v8::Value> WrapItemsWrapGrid(::Windows::UI::Xaml::Controls::ItemsWrapGrid^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ItemsWrapGrid::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ItemsWrapGrid^ UnwrapItemsWrapGrid(Local<Value> value) {
     return ItemsWrapGrid::Unwrap<ItemsWrapGrid>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitItemsWrapGrid(Local<Object> exports) {
    ItemsWrapGrid::Init(exports);
  }

  class PathIcon : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("PathIcon").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("data").ToLocalChecked(), DataGetter, DataSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("dataProperty").ToLocalChecked(), DataPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("PathIcon").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      PathIcon(::Windows::UI::Xaml::Controls::PathIcon^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::PathIcon^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::PathIcon^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::PathIcon();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      PathIcon *wrapperInstance = new PathIcon(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::PathIcon^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::PathIcon^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapPathIcon(winRtInstance));
    }





    static void DataGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This())) {
        return;
      }

      PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Geometry^ result = wrapper->_instance->Data;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Geometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Geometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This())) {
        return;
      }

      PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Geometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Geometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Data = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This())) {
        return;
      }

      IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This())) {
        return;
      }

      IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void DataPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::PathIcon::DataProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::IconElement::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PathIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PathIcon *wrapper = PathIcon::Unwrap<PathIcon>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::PathIcon^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapPathIcon(::Windows::UI::Xaml::Controls::PathIcon^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::PathIcon^ UnwrapPathIcon(Local<Value> value);
  };

  Persistent<FunctionTemplate> PathIcon::s_constructorTemplate;

  v8::Local<v8::Value> WrapPathIcon(::Windows::UI::Xaml::Controls::PathIcon^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(PathIcon::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::PathIcon^ UnwrapPathIcon(Local<Value> value) {
     return PathIcon::Unwrap<PathIcon>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitPathIcon(Local<Object> exports) {
    PathIcon::Init(exports);
  }

  class ScrollContentPresenter : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ScrollContentPresenter").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "lineUp", LineUp);
            Nan::SetPrototypeMethod(localRef, "lineDown", LineDown);
            Nan::SetPrototypeMethod(localRef, "lineLeft", LineLeft);
            Nan::SetPrototypeMethod(localRef, "lineRight", LineRight);
            Nan::SetPrototypeMethod(localRef, "pageUp", PageUp);
            Nan::SetPrototypeMethod(localRef, "pageDown", PageDown);
            Nan::SetPrototypeMethod(localRef, "pageLeft", PageLeft);
            Nan::SetPrototypeMethod(localRef, "pageRight", PageRight);
            Nan::SetPrototypeMethod(localRef, "mouseWheelUp", MouseWheelUp);
            Nan::SetPrototypeMethod(localRef, "mouseWheelDown", MouseWheelDown);
            Nan::SetPrototypeMethod(localRef, "mouseWheelLeft", MouseWheelLeft);
            Nan::SetPrototypeMethod(localRef, "mouseWheelRight", MouseWheelRight);
            Nan::SetPrototypeMethod(localRef, "setHorizontalOffset", SetHorizontalOffset);
            Nan::SetPrototypeMethod(localRef, "setVerticalOffset", SetVerticalOffset);
            Nan::SetPrototypeMethod(localRef, "makeVisible", MakeVisible);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("scrollOwner").ToLocalChecked(), ScrollOwnerGetter, ScrollOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canVerticallyScroll").ToLocalChecked(), CanVerticallyScrollGetter, CanVerticallyScrollSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canHorizontallyScroll").ToLocalChecked(), CanHorizontallyScrollGetter, CanHorizontallyScrollSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("extentHeight").ToLocalChecked(), ExtentHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("extentWidth").ToLocalChecked(), ExtentWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalOffset").ToLocalChecked(), HorizontalOffsetGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalOffset").ToLocalChecked(), VerticalOffsetGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("viewportHeight").ToLocalChecked(), ViewportHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("viewportWidth").ToLocalChecked(), ViewportWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opticalMarginAlignment").ToLocalChecked(), OpticalMarginAlignmentGetter, OpticalMarginAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textLineBounds").ToLocalChecked(), TextLineBoundsGetter, TextLineBoundsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cornerRadius").ToLocalChecked(), CornerRadiusGetter, CornerRadiusSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textWrapping").ToLocalChecked(), TextWrappingGetter, TextWrappingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxLines").ToLocalChecked(), MaxLinesGetter, MaxLinesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lineStackingStrategy").ToLocalChecked(), LineStackingStrategyGetter, LineStackingStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lineHeight").ToLocalChecked(), LineHeightGetter, LineHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opticalMarginAlignmentProperty").ToLocalChecked(), OpticalMarginAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textLineBoundsProperty").ToLocalChecked(), TextLineBoundsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textWrappingProperty").ToLocalChecked(), TextWrappingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxLinesProperty").ToLocalChecked(), MaxLinesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lineStackingStrategyProperty").ToLocalChecked(), LineStackingStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lineHeightProperty").ToLocalChecked(), LineHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cornerRadiusProperty").ToLocalChecked(), CornerRadiusPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ScrollContentPresenter").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ScrollContentPresenter(::Windows::UI::Xaml::Controls::ScrollContentPresenter^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ScrollContentPresenter^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ScrollContentPresenter^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ScrollContentPresenter();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ScrollContentPresenter *wrapperInstance = new ScrollContentPresenter(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ScrollContentPresenter^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ScrollContentPresenter^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapScrollContentPresenter(winRtInstance));
    }


    static void LineUp(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->LineUp();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void LineDown(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->LineDown();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void LineLeft(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->LineLeft();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void LineRight(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->LineRight();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void PageUp(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->PageUp();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void PageDown(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->PageDown();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void PageLeft(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->PageLeft();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void PageRight(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->PageRight();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void MouseWheelUp(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->MouseWheelUp();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void MouseWheelDown(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->MouseWheelDown();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void MouseWheelLeft(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->MouseWheelLeft();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void MouseWheelRight(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->MouseWheelRight();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void SetHorizontalOffset(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      if (info.Length() == 1
        && info[0]->IsNumber())
      {
        try
        {
          double arg0 = Nan::To<double>(info[0]).FromMaybe(0.0);
          
          wrapper->_instance->SetHorizontalOffset(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void SetVerticalOffset(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      if (info.Length() == 1
        && info[0]->IsNumber())
      {
        try
        {
          double arg0 = Nan::To<double>(info[0]).FromMaybe(0.0);
          
          wrapper->_instance->SetVerticalOffset(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void MakeVisible(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && NodeRT::Utils::IsRect(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::Foundation::Rect arg1 = NodeRT::Utils::RectFromJs(info[1]);
          
          ::Windows::Foundation::Rect result;
          result = wrapper->_instance->MakeVisible(arg0, arg1);
          info.GetReturnValue().Set(NodeRT::Utils::RectToJs(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void ScrollOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->ScrollOwner;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ScrollOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ScrollOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanVerticallyScrollGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      try  {
        bool result = wrapper->_instance->CanVerticallyScroll;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanVerticallyScrollSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanVerticallyScroll = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanHorizontallyScrollGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      try  {
        bool result = wrapper->_instance->CanHorizontallyScroll;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanHorizontallyScrollSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanHorizontallyScroll = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExtentHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      try  {
        double result = wrapper->_instance->ExtentHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExtentWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      try  {
        double result = wrapper->_instance->ExtentWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      try  {
        double result = wrapper->_instance->HorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      try  {
        double result = wrapper->_instance->VerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ViewportHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      try  {
        double result = wrapper->_instance->ViewportHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ViewportWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This())) {
        return;
      }

      ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());

      try  {
        double result = wrapper->_instance->ViewportWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpticalMarginAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::OpticalMarginAlignment result = wrapper->_instance->OpticalMarginAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpticalMarginAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::OpticalMarginAlignment winRtValue = static_cast<::Windows::UI::Xaml::OpticalMarginAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->OpticalMarginAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextLineBoundsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::TextLineBounds result = wrapper->_instance->TextLineBounds;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextLineBoundsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::TextLineBounds winRtValue = static_cast<::Windows::UI::Xaml::TextLineBounds>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TextLineBounds = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CornerRadiusGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::CornerRadius result = wrapper->_instance->CornerRadius;
        info.GetReturnValue().Set(CornerRadiusToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CornerRadiusSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsCornerRadiusJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::CornerRadius winRtValue = CornerRadiusFromJsObject(value);

        wrapper->_instance->CornerRadius = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextWrappingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::TextWrapping result = wrapper->_instance->TextWrapping;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextWrappingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::TextWrapping winRtValue = static_cast<::Windows::UI::Xaml::TextWrapping>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TextWrapping = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxLinesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        int result = wrapper->_instance->MaxLines;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxLinesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->MaxLines = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LineStackingStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::LineStackingStrategy result = wrapper->_instance->LineStackingStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LineStackingStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        ::Windows::UI::Xaml::LineStackingStrategy winRtValue = static_cast<::Windows::UI::Xaml::LineStackingStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->LineStackingStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LineHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try  {
        double result = wrapper->_instance->LineHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LineHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentPresenter^>(info.This())) {
        return;
      }

      ContentPresenter *wrapper = ContentPresenter::Unwrap<ContentPresenter>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->LineHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpticalMarginAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::OpticalMarginAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextLineBoundsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::TextLineBoundsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextWrappingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::TextWrappingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxLinesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::MaxLinesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LineStackingStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::LineStackingStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LineHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::LineHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CornerRadiusPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentPresenter::CornerRadiusProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollContentPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollContentPresenter *wrapper = ScrollContentPresenter::Unwrap<ScrollContentPresenter>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ScrollContentPresenter^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapScrollContentPresenter(::Windows::UI::Xaml::Controls::ScrollContentPresenter^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ScrollContentPresenter^ UnwrapScrollContentPresenter(Local<Value> value);
  };

  Persistent<FunctionTemplate> ScrollContentPresenter::s_constructorTemplate;

  v8::Local<v8::Value> WrapScrollContentPresenter(::Windows::UI::Xaml::Controls::ScrollContentPresenter^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ScrollContentPresenter::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ScrollContentPresenter^ UnwrapScrollContentPresenter(Local<Value> value) {
     return ScrollContentPresenter::Unwrap<ScrollContentPresenter>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitScrollContentPresenter(Local<Object> exports) {
    ScrollContentPresenter::Init(exports);
  }

  class SymbolIcon : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("SymbolIcon").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("symbol").ToLocalChecked(), SymbolGetter, SymbolSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("symbolProperty").ToLocalChecked(), SymbolPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("SymbolIcon").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      SymbolIcon(::Windows::UI::Xaml::Controls::SymbolIcon^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::SymbolIcon^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::SymbolIcon^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 1
        && info[0]->IsInt32())
      {
        try {
          ::Windows::UI::Xaml::Controls::Symbol arg0 = static_cast<::Windows::UI::Xaml::Controls::Symbol>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::SymbolIcon(arg0);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::SymbolIcon();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      SymbolIcon *wrapperInstance = new SymbolIcon(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::SymbolIcon^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::SymbolIcon^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapSymbolIcon(winRtInstance));
    }





    static void SymbolGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This())) {
        return;
      }

      SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Symbol result = wrapper->_instance->Symbol;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SymbolSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This())) {
        return;
      }

      SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Symbol winRtValue = static_cast<::Windows::UI::Xaml::Controls::Symbol>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Symbol = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This())) {
        return;
      }

      IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(info.This())) {
        return;
      }

      IconElement *wrapper = IconElement::Unwrap<IconElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void SymbolPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SymbolIcon::SymbolProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::IconElement::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SymbolIcon^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SymbolIcon *wrapper = SymbolIcon::Unwrap<SymbolIcon>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::SymbolIcon^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapSymbolIcon(::Windows::UI::Xaml::Controls::SymbolIcon^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::SymbolIcon^ UnwrapSymbolIcon(Local<Value> value);
  };

  Persistent<FunctionTemplate> SymbolIcon::s_constructorTemplate;

  v8::Local<v8::Value> WrapSymbolIcon(::Windows::UI::Xaml::Controls::SymbolIcon^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(SymbolIcon::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::SymbolIcon^ UnwrapSymbolIcon(Local<Value> value) {
     return SymbolIcon::Unwrap<SymbolIcon>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitSymbolIcon(Local<Object> exports) {
    SymbolIcon::Init(exports);
  }

  class SwapChainBackgroundPanel : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("SwapChainBackgroundPanel").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "createCoreIndependentInputSource", CreateCoreIndependentInputSource);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("columnDefinitions").ToLocalChecked(), ColumnDefinitionsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("rowDefinitions").ToLocalChecked(), RowDefinitionsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cornerRadius").ToLocalChecked(), CornerRadiusGetter, CornerRadiusSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("childrenTransitions").ToLocalChecked(), ChildrenTransitionsGetter, ChildrenTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("children").ToLocalChecked(), ChildrenGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isItemsHost").ToLocalChecked(), IsItemsHostGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("columnProperty").ToLocalChecked(), ColumnPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("columnSpanProperty").ToLocalChecked(), ColumnSpanPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rowProperty").ToLocalChecked(), RowPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rowSpanProperty").ToLocalChecked(), RowSpanPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cornerRadiusProperty").ToLocalChecked(), CornerRadiusPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("childrenTransitionsProperty").ToLocalChecked(), ChildrenTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isItemsHostProperty").ToLocalChecked(), IsItemsHostPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("SwapChainBackgroundPanel").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      SwapChainBackgroundPanel(::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      SwapChainBackgroundPanel *wrapperInstance = new SwapChainBackgroundPanel(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapSwapChainBackgroundPanel(winRtInstance));
    }


    static void CreateCoreIndependentInputSource(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This())) {
        return;
      }

      SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());

      if (info.Length() == 1
        && info[0]->IsInt32())
      {
        try
        {
          ::Windows::UI::Core::CoreInputDeviceTypes arg0 = static_cast<::Windows::UI::Core::CoreInputDeviceTypes>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          
          ::Windows::UI::Core::CoreIndependentInputSource^ result;
          result = wrapper->_instance->CreateCoreIndependentInputSource(arg0);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreIndependentInputSource", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void ColumnDefinitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^ result = wrapper->_instance->ColumnDefinitions;
        info.GetReturnValue().Set(WrapColumnDefinitionCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RowDefinitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RowDefinitionCollection^ result = wrapper->_instance->RowDefinitions;
        info.GetReturnValue().Set(WrapRowDefinitionCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CornerRadiusGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try  {
        ::Windows::UI::Xaml::CornerRadius result = wrapper->_instance->CornerRadius;
        info.GetReturnValue().Set(CornerRadiusToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CornerRadiusSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsCornerRadiusJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try {

        ::Windows::UI::Xaml::CornerRadius winRtValue = CornerRadiusFromJsObject(value);

        wrapper->_instance->CornerRadius = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildrenTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ChildrenTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ChildrenTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ChildrenTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildrenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::UIElementCollection^ result = wrapper->_instance->Children;
        info.GetReturnValue().Set(WrapUIElementCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsItemsHostGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        bool result = wrapper->_instance->IsItemsHost;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ColumnPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::ColumnProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ColumnSpanPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::ColumnSpanProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RowPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::RowProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RowSpanPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::RowSpanProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CornerRadiusPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::CornerRadiusProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ChildrenTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::ChildrenTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsItemsHostPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::IsItemsHostProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainBackgroundPanel *wrapper = SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapSwapChainBackgroundPanel(::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^ UnwrapSwapChainBackgroundPanel(Local<Value> value);
  };

  Persistent<FunctionTemplate> SwapChainBackgroundPanel::s_constructorTemplate;

  v8::Local<v8::Value> WrapSwapChainBackgroundPanel(::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(SwapChainBackgroundPanel::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^ UnwrapSwapChainBackgroundPanel(Local<Value> value) {
     return SwapChainBackgroundPanel::Unwrap<SwapChainBackgroundPanel>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitSwapChainBackgroundPanel(Local<Object> exports) {
    SwapChainBackgroundPanel::Init(exports);
  }

  class SwapChainPanel : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("SwapChainPanel").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "createCoreIndependentInputSource", CreateCoreIndependentInputSource);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositionScaleX").ToLocalChecked(), CompositionScaleXGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositionScaleY").ToLocalChecked(), CompositionScaleYGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("columnDefinitions").ToLocalChecked(), ColumnDefinitionsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("rowDefinitions").ToLocalChecked(), RowDefinitionsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cornerRadius").ToLocalChecked(), CornerRadiusGetter, CornerRadiusSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("childrenTransitions").ToLocalChecked(), ChildrenTransitionsGetter, ChildrenTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("children").ToLocalChecked(), ChildrenGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isItemsHost").ToLocalChecked(), IsItemsHostGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("compositionScaleXProperty").ToLocalChecked(), CompositionScaleXPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositionScaleYProperty").ToLocalChecked(), CompositionScaleYPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("columnProperty").ToLocalChecked(), ColumnPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("columnSpanProperty").ToLocalChecked(), ColumnSpanPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rowProperty").ToLocalChecked(), RowPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rowSpanProperty").ToLocalChecked(), RowSpanPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cornerRadiusProperty").ToLocalChecked(), CornerRadiusPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("childrenTransitionsProperty").ToLocalChecked(), ChildrenTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isItemsHostProperty").ToLocalChecked(), IsItemsHostPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("SwapChainPanel").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      SwapChainPanel(::Windows::UI::Xaml::Controls::SwapChainPanel^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::SwapChainPanel^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::SwapChainPanel^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::SwapChainPanel();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      SwapChainPanel *wrapperInstance = new SwapChainPanel(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::SwapChainPanel^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::SwapChainPanel^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapSwapChainPanel(winRtInstance));
    }


    static void CreateCoreIndependentInputSource(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This())) {
        return;
      }

      SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());

      if (info.Length() == 1
        && info[0]->IsInt32())
      {
        try
        {
          ::Windows::UI::Core::CoreInputDeviceTypes arg0 = static_cast<::Windows::UI::Core::CoreInputDeviceTypes>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          
          ::Windows::UI::Core::CoreIndependentInputSource^ result;
          result = wrapper->_instance->CreateCoreIndependentInputSource(arg0);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreIndependentInputSource", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void CompositionScaleXGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This())) {
        return;
      }

      SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());

      try  {
        float result = wrapper->_instance->CompositionScaleX;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositionScaleYGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This())) {
        return;
      }

      SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());

      try  {
        float result = wrapper->_instance->CompositionScaleY;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ColumnDefinitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ColumnDefinitionCollection^ result = wrapper->_instance->ColumnDefinitions;
        info.GetReturnValue().Set(WrapColumnDefinitionCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RowDefinitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RowDefinitionCollection^ result = wrapper->_instance->RowDefinitions;
        info.GetReturnValue().Set(WrapRowDefinitionCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CornerRadiusGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try  {
        ::Windows::UI::Xaml::CornerRadius result = wrapper->_instance->CornerRadius;
        info.GetReturnValue().Set(CornerRadiusToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CornerRadiusSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsCornerRadiusJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try {

        ::Windows::UI::Xaml::CornerRadius winRtValue = CornerRadiusFromJsObject(value);

        wrapper->_instance->CornerRadius = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Grid^>(info.This())) {
        return;
      }

      Grid *wrapper = Grid::Unwrap<Grid>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildrenTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ChildrenTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ChildrenTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ChildrenTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildrenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::UIElementCollection^ result = wrapper->_instance->Children;
        info.GetReturnValue().Set(WrapUIElementCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsItemsHostGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        bool result = wrapper->_instance->IsItemsHost;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void CompositionScaleXPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SwapChainPanel::CompositionScaleXProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositionScaleYPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SwapChainPanel::CompositionScaleYProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ColumnPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::ColumnProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ColumnSpanPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::ColumnSpanProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RowPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::RowProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RowSpanPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::RowSpanProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CornerRadiusPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::CornerRadiusProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Grid::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ChildrenTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::ChildrenTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsItemsHostPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::IsItemsHostProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"compositionScaleChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->CompositionScaleChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::SwapChainPanel^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::SwapChainPanel^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapSwapChainPanel(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"compositionScaleChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"compositionScaleChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->CompositionScaleChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SwapChainPanel^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SwapChainPanel *wrapper = SwapChainPanel::Unwrap<SwapChainPanel>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::SwapChainPanel^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapSwapChainPanel(::Windows::UI::Xaml::Controls::SwapChainPanel^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::SwapChainPanel^ UnwrapSwapChainPanel(Local<Value> value);
  };

  Persistent<FunctionTemplate> SwapChainPanel::s_constructorTemplate;

  v8::Local<v8::Value> WrapSwapChainPanel(::Windows::UI::Xaml::Controls::SwapChainPanel^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(SwapChainPanel::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::SwapChainPanel^ UnwrapSwapChainPanel(Local<Value> value) {
     return SwapChainPanel::Unwrap<SwapChainPanel>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitSwapChainPanel(Local<Object> exports) {
    SwapChainPanel::Init(exports);
  }

  class WrapGrid : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("WrapGrid").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalChildrenAlignment").ToLocalChecked(), VerticalChildrenAlignmentGetter, VerticalChildrenAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("orientation").ToLocalChecked(), OrientationGetter, OrientationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maximumRowsOrColumns").ToLocalChecked(), MaximumRowsOrColumnsGetter, MaximumRowsOrColumnsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemWidth").ToLocalChecked(), ItemWidthGetter, ItemWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemHeight").ToLocalChecked(), ItemHeightGetter, ItemHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalChildrenAlignment").ToLocalChecked(), HorizontalChildrenAlignmentGetter, HorizontalChildrenAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("scrollOwner").ToLocalChecked(), ScrollOwnerGetter, ScrollOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canVerticallyScroll").ToLocalChecked(), CanVerticallyScrollGetter, CanVerticallyScrollSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canHorizontallyScroll").ToLocalChecked(), CanHorizontallyScrollGetter, CanHorizontallyScrollSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("extentHeight").ToLocalChecked(), ExtentHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("extentWidth").ToLocalChecked(), ExtentWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalOffset").ToLocalChecked(), HorizontalOffsetGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalOffset").ToLocalChecked(), VerticalOffsetGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("viewportHeight").ToLocalChecked(), ViewportHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("viewportWidth").ToLocalChecked(), ViewportWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("areHorizontalSnapPointsRegular").ToLocalChecked(), AreHorizontalSnapPointsRegularGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("areVerticalSnapPointsRegular").ToLocalChecked(), AreVerticalSnapPointsRegularGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerGenerator").ToLocalChecked(), ItemContainerGeneratorGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("childrenTransitions").ToLocalChecked(), ChildrenTransitionsGetter, ChildrenTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("children").ToLocalChecked(), ChildrenGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isItemsHost").ToLocalChecked(), IsItemsHostGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("horizontalChildrenAlignmentProperty").ToLocalChecked(), HorizontalChildrenAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemHeightProperty").ToLocalChecked(), ItemHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemWidthProperty").ToLocalChecked(), ItemWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maximumRowsOrColumnsProperty").ToLocalChecked(), MaximumRowsOrColumnsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("orientationProperty").ToLocalChecked(), OrientationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalChildrenAlignmentProperty").ToLocalChecked(), VerticalChildrenAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("childrenTransitionsProperty").ToLocalChecked(), ChildrenTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isItemsHostProperty").ToLocalChecked(), IsItemsHostPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("WrapGrid").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      WrapGrid(::Windows::UI::Xaml::Controls::WrapGrid^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::WrapGrid^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::WrapGrid^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::WrapGrid();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      WrapGrid *wrapperInstance = new WrapGrid(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::WrapGrid^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::WrapGrid^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapWrapGrid(winRtInstance));
    }





    static void VerticalChildrenAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This())) {
        return;
      }

      WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalChildrenAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalChildrenAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This())) {
        return;
      }

      WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalChildrenAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OrientationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This())) {
        return;
      }

      WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Orientation result = wrapper->_instance->Orientation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OrientationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This())) {
        return;
      }

      WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Orientation winRtValue = static_cast<::Windows::UI::Xaml::Controls::Orientation>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Orientation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaximumRowsOrColumnsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This())) {
        return;
      }

      WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());

      try  {
        int result = wrapper->_instance->MaximumRowsOrColumns;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaximumRowsOrColumnsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This())) {
        return;
      }

      WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->MaximumRowsOrColumns = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This())) {
        return;
      }

      WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());

      try  {
        double result = wrapper->_instance->ItemWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This())) {
        return;
      }

      WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->ItemWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This())) {
        return;
      }

      WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());

      try  {
        double result = wrapper->_instance->ItemHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This())) {
        return;
      }

      WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->ItemHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalChildrenAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This())) {
        return;
      }

      WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalChildrenAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalChildrenAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This())) {
        return;
      }

      WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalChildrenAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ScrollOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->ScrollOwner;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ScrollOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ScrollOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanVerticallyScrollGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try  {
        bool result = wrapper->_instance->CanVerticallyScroll;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanVerticallyScrollSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanVerticallyScroll = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanHorizontallyScrollGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try  {
        bool result = wrapper->_instance->CanHorizontallyScroll;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanHorizontallyScrollSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanHorizontallyScroll = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExtentHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try  {
        double result = wrapper->_instance->ExtentHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExtentWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try  {
        double result = wrapper->_instance->ExtentWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try  {
        double result = wrapper->_instance->HorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try  {
        double result = wrapper->_instance->VerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ViewportHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try  {
        double result = wrapper->_instance->ViewportHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ViewportWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try  {
        double result = wrapper->_instance->ViewportWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AreHorizontalSnapPointsRegularGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try  {
        bool result = wrapper->_instance->AreHorizontalSnapPointsRegular;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AreVerticalSnapPointsRegularGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::OrientedVirtualizingPanel^>(info.This())) {
        return;
      }

      OrientedVirtualizingPanel *wrapper = OrientedVirtualizingPanel::Unwrap<OrientedVirtualizingPanel>(info.This());

      try  {
        bool result = wrapper->_instance->AreVerticalSnapPointsRegular;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerGeneratorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::VirtualizingPanel^>(info.This())) {
        return;
      }

      VirtualizingPanel *wrapper = VirtualizingPanel::Unwrap<VirtualizingPanel>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemContainerGenerator^ result = wrapper->_instance->ItemContainerGenerator;
        info.GetReturnValue().Set(WrapItemContainerGenerator(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ChildrenTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ChildrenTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ChildrenTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ChildrenTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildrenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::UIElementCollection^ result = wrapper->_instance->Children;
        info.GetReturnValue().Set(WrapUIElementCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsItemsHostGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Panel^>(info.This())) {
        return;
      }

      Panel *wrapper = Panel::Unwrap<Panel>(info.This());

      try  {
        bool result = wrapper->_instance->IsItemsHost;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void HorizontalChildrenAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::WrapGrid::HorizontalChildrenAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::WrapGrid::ItemHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::WrapGrid::ItemWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaximumRowsOrColumnsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::WrapGrid::MaximumRowsOrColumnsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OrientationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::WrapGrid::OrientationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalChildrenAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::WrapGrid::VerticalChildrenAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ChildrenTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::ChildrenTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsItemsHostPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Panel::IsItemsHostProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"horizontalSnapPointsChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->HorizontalSnapPointsChanged::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"verticalSnapPointsChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->VerticalSnapPointsChanged::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"horizontalSnapPointsChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"verticalSnapPointsChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"horizontalSnapPointsChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->HorizontalSnapPointsChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"verticalSnapPointsChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->VerticalSnapPointsChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WrapGrid^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          WrapGrid *wrapper = WrapGrid::Unwrap<WrapGrid>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::WrapGrid^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapWrapGrid(::Windows::UI::Xaml::Controls::WrapGrid^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::WrapGrid^ UnwrapWrapGrid(Local<Value> value);
  };

  Persistent<FunctionTemplate> WrapGrid::s_constructorTemplate;

  v8::Local<v8::Value> WrapWrapGrid(::Windows::UI::Xaml::Controls::WrapGrid^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(WrapGrid::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::WrapGrid^ UnwrapWrapGrid(Local<Value> value) {
     return WrapGrid::Unwrap<WrapGrid>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitWrapGrid(Local<Object> exports) {
    WrapGrid::Init(exports);
  }

  class FocusDisengagedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("FocusDisengagedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("originalSource").ToLocalChecked(), OriginalSourceGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("FocusDisengagedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      FocusDisengagedEventArgs(::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      FocusDisengagedEventArgs *wrapperInstance = new FocusDisengagedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapFocusDisengagedEventArgs(winRtInstance));
    }





    static void OriginalSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::RoutedEventArgs^>(info.This())) {
        return;
      }

      RoutedEventArgs *wrapper = RoutedEventArgs::Unwrap<RoutedEventArgs>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->OriginalSource;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapFocusDisengagedEventArgs(::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ UnwrapFocusDisengagedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> FocusDisengagedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapFocusDisengagedEventArgs(::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(FocusDisengagedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ UnwrapFocusDisengagedEventArgs(Local<Value> value) {
     return FocusDisengagedEventArgs::Unwrap<FocusDisengagedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitFocusDisengagedEventArgs(Local<Object> exports) {
    FocusDisengagedEventArgs::Init(exports);
  }

  class FocusEngagedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("FocusEngagedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("handled").ToLocalChecked(), HandledGetter, HandledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("originalSource").ToLocalChecked(), OriginalSourceGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("FocusEngagedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      FocusEngagedEventArgs(::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      FocusEngagedEventArgs *wrapperInstance = new FocusEngagedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapFocusEngagedEventArgs(winRtInstance));
    }





    static void HandledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(info.This())) {
        return;
      }

      FocusEngagedEventArgs *wrapper = FocusEngagedEventArgs::Unwrap<FocusEngagedEventArgs>(info.This());

      try  {
        bool result = wrapper->_instance->Handled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HandledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(info.This())) {
        return;
      }

      FocusEngagedEventArgs *wrapper = FocusEngagedEventArgs::Unwrap<FocusEngagedEventArgs>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->Handled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OriginalSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::RoutedEventArgs^>(info.This())) {
        return;
      }

      RoutedEventArgs *wrapper = RoutedEventArgs::Unwrap<RoutedEventArgs>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->OriginalSource;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapFocusEngagedEventArgs(::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ UnwrapFocusEngagedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> FocusEngagedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapFocusEngagedEventArgs(::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(FocusEngagedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ UnwrapFocusEngagedEventArgs(Local<Value> value) {
     return FocusEngagedEventArgs::Unwrap<FocusEngagedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitFocusEngagedEventArgs(Local<Object> exports) {
    FocusEngagedEventArgs::Init(exports);
  }

  class ControlTemplate : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ControlTemplate").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("targetType").ToLocalChecked(), TargetTypeGetter, TargetTypeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("ControlTemplate").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ControlTemplate(::Windows::UI::Xaml::Controls::ControlTemplate^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ControlTemplate^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ControlTemplate();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ControlTemplate *wrapperInstance = new ControlTemplate(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ControlTemplate^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapControlTemplate(winRtInstance));
    }





    static void TargetTypeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(info.This())) {
        return;
      }

      ControlTemplate *wrapper = ControlTemplate::Unwrap<ControlTemplate>(info.This());

      try  {
        ::Platform::Type^ result = wrapper->_instance->TargetType;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System", "Type", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TargetTypeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Type^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(info.This())) {
        return;
      }

      ControlTemplate *wrapper = ControlTemplate::Unwrap<ControlTemplate>(info.This());

      try {

        ::Platform::Type^ winRtValue = dynamic_cast<::Platform::Type^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->TargetType = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::ControlTemplate^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapControlTemplate(::Windows::UI::Xaml::Controls::ControlTemplate^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ControlTemplate^ UnwrapControlTemplate(Local<Value> value);
  };

  Persistent<FunctionTemplate> ControlTemplate::s_constructorTemplate;

  v8::Local<v8::Value> WrapControlTemplate(::Windows::UI::Xaml::Controls::ControlTemplate^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ControlTemplate::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ControlTemplate^ UnwrapControlTemplate(Local<Value> value) {
     return ControlTemplate::Unwrap<ControlTemplate>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitControlTemplate(Local<Object> exports) {
    ControlTemplate::Init(exports);
  }

  class Control : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("Control").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "onDoubleTapped", OnDoubleTapped);
            Nan::SetPrototypeMethod(localRef, "onHolding", OnHolding);
            Nan::SetPrototypeMethod(localRef, "onRightTapped", OnRightTapped);
            Nan::SetPrototypeMethod(localRef, "onManipulationStarting", OnManipulationStarting);
            Nan::SetPrototypeMethod(localRef, "onManipulationInertiaStarting", OnManipulationInertiaStarting);
            Nan::SetPrototypeMethod(localRef, "onManipulationStarted", OnManipulationStarted);
            Nan::SetPrototypeMethod(localRef, "onManipulationDelta", OnManipulationDelta);
            Nan::SetPrototypeMethod(localRef, "onManipulationCompleted", OnManipulationCompleted);
            Nan::SetPrototypeMethod(localRef, "onKeyUp", OnKeyUp);
            Nan::SetPrototypeMethod(localRef, "onKeyDown", OnKeyDown);
            Nan::SetPrototypeMethod(localRef, "onGotFocus", OnGotFocus);
            Nan::SetPrototypeMethod(localRef, "onLostFocus", OnLostFocus);
            Nan::SetPrototypeMethod(localRef, "onDragEnter", OnDragEnter);
            Nan::SetPrototypeMethod(localRef, "onDragLeave", OnDragLeave);
            Nan::SetPrototypeMethod(localRef, "onDragOver", OnDragOver);
            Nan::SetPrototypeMethod(localRef, "onDrop", OnDrop);
            Nan::SetPrototypeMethod(localRef, "getTemplateChild", GetTemplateChild);
            Nan::SetPrototypeMethod(localRef, "removeFocusEngagement", RemoveFocusEngagement);
            Nan::SetPrototypeMethod(localRef, "applyTemplate", ApplyTemplate);
            Nan::SetPrototypeMethod(localRef, "focus", Focus);
            Nan::SetPrototypeMethod(localRef, "onPointerEntered", OnPointerEntered);
            Nan::SetPrototypeMethod(localRef, "onPointerPressed", OnPointerPressed);
            Nan::SetPrototypeMethod(localRef, "onPointerMoved", OnPointerMoved);
            Nan::SetPrototypeMethod(localRef, "onPointerReleased", OnPointerReleased);
            Nan::SetPrototypeMethod(localRef, "onPointerExited", OnPointerExited);
            Nan::SetPrototypeMethod(localRef, "onPointerCaptureLost", OnPointerCaptureLost);
            Nan::SetPrototypeMethod(localRef, "onPointerCanceled", OnPointerCanceled);
            Nan::SetPrototypeMethod(localRef, "onPointerWheelChanged", OnPointerWheelChanged);
            Nan::SetPrototypeMethod(localRef, "onTapped", OnTapped);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetMethod(constructor, "getIsTemplateFocusTarget", GetIsTemplateFocusTarget);
        Nan::SetMethod(constructor, "setIsTemplateFocusTarget", SetIsTemplateFocusTarget);
        Nan::SetMethod(constructor, "getIsTemplateKeyTipTarget", GetIsTemplateKeyTipTarget);
        Nan::SetMethod(constructor, "setIsTemplateKeyTipTarget", SetIsTemplateKeyTipTarget);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("Control").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      Control(::Windows::UI::Xaml::Controls::Control^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::Control^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::Control^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      Control *wrapperInstance = new Control(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::Control^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::Control^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapControl(winRtInstance));
    }


    static void OnDoubleTapped(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnDoubleTapped(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnHolding(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnHolding(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnRightTapped(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnRightTapped(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnManipulationStarting(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnManipulationStarting(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnManipulationInertiaStarting(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnManipulationInertiaStarting(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnManipulationStarted(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnManipulationStarted(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnManipulationDelta(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnManipulationDelta(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnManipulationCompleted(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnManipulationCompleted(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnKeyUp(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::KeyRoutedEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::Input::KeyRoutedEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnKeyUp(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnKeyDown(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::KeyRoutedEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::Input::KeyRoutedEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnKeyDown(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnGotFocus(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::RoutedEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::RoutedEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::RoutedEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnGotFocus(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnLostFocus(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::RoutedEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::RoutedEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::RoutedEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnLostFocus(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnDragEnter(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DragEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DragEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::DragEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnDragEnter(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnDragLeave(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DragEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DragEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::DragEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnDragLeave(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnDragOver(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DragEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DragEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::DragEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnDragOver(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnDrop(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DragEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DragEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::DragEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnDrop(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetTemplateChild(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && info[0]->IsString())
      {
        try
        {
          Platform::String^ arg0 = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), info[0])));
          
          ::Windows::UI::Xaml::DependencyObject^ result;
          result = wrapper->_instance->GetTemplateChild(arg0);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void RemoveFocusEngagement(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->RemoveFocusEngagement();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void ApplyTemplate(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          bool result;
          result = wrapper->_instance->ApplyTemplate();
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Focus(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && info[0]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::FocusState arg0 = static_cast<::Windows::UI::Xaml::FocusState>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          
          bool result;
          result = wrapper->_instance->Focus(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnPointerEntered(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::PointerRoutedEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::Input::PointerRoutedEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnPointerEntered(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnPointerPressed(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::PointerRoutedEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::Input::PointerRoutedEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnPointerPressed(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnPointerMoved(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::PointerRoutedEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::Input::PointerRoutedEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnPointerMoved(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnPointerReleased(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::PointerRoutedEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::Input::PointerRoutedEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnPointerReleased(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnPointerExited(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::PointerRoutedEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::Input::PointerRoutedEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnPointerExited(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnPointerCaptureLost(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::PointerRoutedEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::Input::PointerRoutedEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnPointerCaptureLost(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnPointerCanceled(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::PointerRoutedEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::Input::PointerRoutedEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnPointerCanceled(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnPointerWheelChanged(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::PointerRoutedEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::Input::PointerRoutedEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnPointerWheelChanged(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnTapped(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::TappedRoutedEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::Input::TappedRoutedEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnTapped(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void GetIsTemplateFocusTarget(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::FrameworkElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::FrameworkElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          bool result;
          result = ::Windows::UI::Xaml::Controls::Control::GetIsTemplateFocusTarget(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetIsTemplateFocusTarget(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info[0])
        && info[1]->IsBoolean())
      {
        try
        {
          ::Windows::UI::Xaml::FrameworkElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::FrameworkElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          bool arg1 = Nan::To<bool>(info[1]).FromMaybe(false);
          
          ::Windows::UI::Xaml::Controls::Control::SetIsTemplateFocusTarget(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetIsTemplateKeyTipTarget(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          bool result;
          result = ::Windows::UI::Xaml::Controls::Control::GetIsTemplateKeyTipTarget(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetIsTemplateKeyTipTarget(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0])
        && info[1]->IsBoolean())
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          bool arg1 = Nan::To<bool>(info[1]).FromMaybe(false);
          
          ::Windows::UI::Xaml::Controls::Control::SetIsTemplateKeyTipTarget(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Control *wrapper = Control::Unwrap<Control>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Control *wrapper = Control::Unwrap<Control>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::Control^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapControl(::Windows::UI::Xaml::Controls::Control^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::Control^ UnwrapControl(Local<Value> value);
  };

  Persistent<FunctionTemplate> Control::s_constructorTemplate;

  v8::Local<v8::Value> WrapControl(::Windows::UI::Xaml::Controls::Control^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(Control::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::Control^ UnwrapControl(Local<Value> value) {
     return Control::Unwrap<Control>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitControl(Local<Object> exports) {
    Control::Init(exports);
  }

  class SemanticZoom : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("SemanticZoom").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "toggleActiveView", ToggleActiveView);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("zoomedOutView").ToLocalChecked(), ZoomedOutViewGetter, ZoomedOutViewSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("zoomedInView").ToLocalChecked(), ZoomedInViewGetter, ZoomedInViewSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isZoomedInViewActive").ToLocalChecked(), IsZoomedInViewActiveGetter, IsZoomedInViewActiveSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isZoomOutButtonEnabled").ToLocalChecked(), IsZoomOutButtonEnabledGetter, IsZoomOutButtonEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canChangeViews").ToLocalChecked(), CanChangeViewsGetter, CanChangeViewsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("canChangeViewsProperty").ToLocalChecked(), CanChangeViewsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isZoomOutButtonEnabledProperty").ToLocalChecked(), IsZoomOutButtonEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isZoomedInViewActiveProperty").ToLocalChecked(), IsZoomedInViewActivePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("zoomedInViewProperty").ToLocalChecked(), ZoomedInViewPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("zoomedOutViewProperty").ToLocalChecked(), ZoomedOutViewPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("SemanticZoom").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      SemanticZoom(::Windows::UI::Xaml::Controls::SemanticZoom^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::SemanticZoom^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::SemanticZoom^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::SemanticZoom();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      SemanticZoom *wrapperInstance = new SemanticZoom(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::SemanticZoom^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::SemanticZoom^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapSemanticZoom(winRtInstance));
    }


    static void ToggleActiveView(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This())) {
        return;
      }

      SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->ToggleActiveView();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void ZoomedOutViewGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This())) {
        return;
      }

      SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ISemanticZoomInformation^ result = wrapper->_instance->ZoomedOutView;
        info.GetReturnValue().Set(WrapISemanticZoomInformation(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ZoomedOutViewSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ISemanticZoomInformation^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This())) {
        return;
      }

      SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ISemanticZoomInformation^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ISemanticZoomInformation^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ZoomedOutView = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ZoomedInViewGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This())) {
        return;
      }

      SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ISemanticZoomInformation^ result = wrapper->_instance->ZoomedInView;
        info.GetReturnValue().Set(WrapISemanticZoomInformation(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ZoomedInViewSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ISemanticZoomInformation^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This())) {
        return;
      }

      SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ISemanticZoomInformation^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ISemanticZoomInformation^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ZoomedInView = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsZoomedInViewActiveGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This())) {
        return;
      }

      SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());

      try  {
        bool result = wrapper->_instance->IsZoomedInViewActive;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsZoomedInViewActiveSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This())) {
        return;
      }

      SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsZoomedInViewActive = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsZoomOutButtonEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This())) {
        return;
      }

      SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());

      try  {
        bool result = wrapper->_instance->IsZoomOutButtonEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsZoomOutButtonEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This())) {
        return;
      }

      SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsZoomOutButtonEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanChangeViewsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This())) {
        return;
      }

      SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());

      try  {
        bool result = wrapper->_instance->CanChangeViews;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanChangeViewsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This())) {
        return;
      }

      SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanChangeViews = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void CanChangeViewsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SemanticZoom::CanChangeViewsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsZoomOutButtonEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SemanticZoom::IsZoomOutButtonEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsZoomedInViewActivePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SemanticZoom::IsZoomedInViewActiveProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ZoomedInViewPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SemanticZoom::ZoomedInViewProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ZoomedOutViewPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SemanticZoom::ZoomedOutViewProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"viewChangeCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ViewChangeCompleted::add(
            ref new ::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapSemanticZoomViewChangedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"viewChangeStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ViewChangeStarted::add(
            ref new ::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapSemanticZoomViewChangedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"viewChangeCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"viewChangeStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"viewChangeCompleted", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->ViewChangeCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"viewChangeStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->ViewChangeStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SemanticZoom *wrapper = SemanticZoom::Unwrap<SemanticZoom>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::SemanticZoom^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapSemanticZoom(::Windows::UI::Xaml::Controls::SemanticZoom^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::SemanticZoom^ UnwrapSemanticZoom(Local<Value> value);
  };

  Persistent<FunctionTemplate> SemanticZoom::s_constructorTemplate;

  v8::Local<v8::Value> WrapSemanticZoom(::Windows::UI::Xaml::Controls::SemanticZoom^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(SemanticZoom::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::SemanticZoom^ UnwrapSemanticZoom(Local<Value> value) {
     return SemanticZoom::Unwrap<SemanticZoom>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitSemanticZoom(Local<Object> exports) {
    SemanticZoom::Init(exports);
  }

  class ContentControl : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ContentControl").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "onContentChanged", OnContentChanged);
            Nan::SetPrototypeMethod(localRef, "onContentTemplateChanged", OnContentTemplateChanged);
            Nan::SetPrototypeMethod(localRef, "onContentTemplateSelectorChanged", OnContentTemplateSelectorChanged);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ContentControl").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ContentControl(::Windows::UI::Xaml::Controls::ContentControl^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ContentControl^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ContentControl^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ContentControl();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ContentControl *wrapperInstance = new ContentControl(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ContentControl^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ContentControl^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapContentControl(winRtInstance));
    }


    static void OnContentChanged(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          wrapper->_instance->OnContentChanged(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnContentTemplateChanged(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::DataTemplate^ arg0 = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::UI::Xaml::DataTemplate^ arg1 = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          wrapper->_instance->OnContentTemplateChanged(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnContentTemplateSelectorChanged(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::DataTemplateSelector^ arg0 = UnwrapDataTemplateSelector(info[0]);
          ::Windows::UI::Xaml::Controls::DataTemplateSelector^ arg1 = UnwrapDataTemplateSelector(info[1]);
          
          wrapper->_instance->OnContentTemplateSelectorChanged(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ContentControl^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapContentControl(::Windows::UI::Xaml::Controls::ContentControl^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ContentControl^ UnwrapContentControl(Local<Value> value);
  };

  Persistent<FunctionTemplate> ContentControl::s_constructorTemplate;

  v8::Local<v8::Value> WrapContentControl(::Windows::UI::Xaml::Controls::ContentControl^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ContentControl::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ContentControl^ UnwrapContentControl(Local<Value> value) {
     return ContentControl::Unwrap<ContentControl>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitContentControl(Local<Object> exports) {
    ContentControl::Init(exports);
  }

  class ListViewBaseHeaderItem : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ListViewBaseHeaderItem").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ListViewBaseHeaderItem").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ListViewBaseHeaderItem(::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ListViewBaseHeaderItem *wrapperInstance = new ListViewBaseHeaderItem(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapListViewBaseHeaderItem(winRtInstance));
    }





    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBaseHeaderItem *wrapper = ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapListViewBaseHeaderItem(::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^ UnwrapListViewBaseHeaderItem(Local<Value> value);
  };

  Persistent<FunctionTemplate> ListViewBaseHeaderItem::s_constructorTemplate;

  v8::Local<v8::Value> WrapListViewBaseHeaderItem(::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ListViewBaseHeaderItem::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ListViewBaseHeaderItem^ UnwrapListViewBaseHeaderItem(Local<Value> value) {
     return ListViewBaseHeaderItem::Unwrap<ListViewBaseHeaderItem>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitListViewBaseHeaderItem(Local<Object> exports) {
    ListViewBaseHeaderItem::Init(exports);
  }

  class ItemsControl : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ItemsControl").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "isItemItsOwnContainerOverride", IsItemItsOwnContainerOverride);
            Nan::SetPrototypeMethod(localRef, "getContainerForItemOverride", GetContainerForItemOverride);
            Nan::SetPrototypeMethod(localRef, "clearContainerForItemOverride", ClearContainerForItemOverride);
            Nan::SetPrototypeMethod(localRef, "prepareContainerForItemOverride", PrepareContainerForItemOverride);
            Nan::SetPrototypeMethod(localRef, "onItemsChanged", OnItemsChanged);
            Nan::SetPrototypeMethod(localRef, "onItemContainerStyleChanged", OnItemContainerStyleChanged);
            Nan::SetPrototypeMethod(localRef, "onItemContainerStyleSelectorChanged", OnItemContainerStyleSelectorChanged);
            Nan::SetPrototypeMethod(localRef, "onItemTemplateChanged", OnItemTemplateChanged);
            Nan::SetPrototypeMethod(localRef, "onItemTemplateSelectorChanged", OnItemTemplateSelectorChanged);
            Nan::SetPrototypeMethod(localRef, "onGroupStyleSelectorChanged", OnGroupStyleSelectorChanged);
            Nan::SetPrototypeMethod(localRef, "itemFromContainer", ItemFromContainer);
            Nan::SetPrototypeMethod(localRef, "containerFromItem", ContainerFromItem);
            Nan::SetPrototypeMethod(localRef, "indexFromContainer", IndexFromContainer);
            Nan::SetPrototypeMethod(localRef, "containerFromIndex", ContainerFromIndex);
            Nan::SetPrototypeMethod(localRef, "groupHeaderContainerFromItemContainer", GroupHeaderContainerFromItemContainer);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsPanel").ToLocalChecked(), ItemsPanelGetter, ItemsPanelSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsSource").ToLocalChecked(), ItemsSourceGetter, ItemsSourceSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemTemplateSelector").ToLocalChecked(), ItemTemplateSelectorGetter, ItemTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemTemplate").ToLocalChecked(), ItemTemplateGetter, ItemTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerStyleSelector").ToLocalChecked(), ItemContainerStyleSelectorGetter, ItemContainerStyleSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerStyle").ToLocalChecked(), ItemContainerStyleGetter, ItemContainerStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupStyleSelector").ToLocalChecked(), GroupStyleSelectorGetter, GroupStyleSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerTransitions").ToLocalChecked(), ItemContainerTransitionsGetter, ItemContainerTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("displayMemberPath").ToLocalChecked(), DisplayMemberPathGetter, DisplayMemberPathSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerGenerator").ToLocalChecked(), ItemContainerGeneratorGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("items").ToLocalChecked(), ItemsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupStyle").ToLocalChecked(), GroupStyleGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isGrouping").ToLocalChecked(), IsGroupingGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsPanelRoot").ToLocalChecked(), ItemsPanelRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetMethod(constructor, "getItemsOwner", GetItemsOwner);
        Nan::SetMethod(constructor, "itemsControlFromItemContainer", ItemsControlFromItemContainer);
        Nan::SetAccessor(constructor, Nan::New<String>("displayMemberPathProperty").ToLocalChecked(), DisplayMemberPathPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("groupStyleSelectorProperty").ToLocalChecked(), GroupStyleSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isGroupingProperty").ToLocalChecked(), IsGroupingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerStyleProperty").ToLocalChecked(), ItemContainerStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerStyleSelectorProperty").ToLocalChecked(), ItemContainerStyleSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerTransitionsProperty").ToLocalChecked(), ItemContainerTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemTemplateProperty").ToLocalChecked(), ItemTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemTemplateSelectorProperty").ToLocalChecked(), ItemTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemsPanelProperty").ToLocalChecked(), ItemsPanelPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemsSourceProperty").ToLocalChecked(), ItemsSourcePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ItemsControl").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ItemsControl(::Windows::UI::Xaml::Controls::ItemsControl^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ItemsControl^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ItemsControl^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ItemsControl();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ItemsControl *wrapperInstance = new ItemsControl(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ItemsControl^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ItemsControl^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapItemsControl(winRtInstance));
    }


    static void IsItemItsOwnContainerOverride(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          bool result;
          result = wrapper->_instance->IsItemItsOwnContainerOverride(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetContainerForItemOverride(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ result;
          result = wrapper->_instance->GetContainerForItemOverride();
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void ClearContainerForItemOverride(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          wrapper->_instance->ClearContainerForItemOverride(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void PrepareContainerForItemOverride(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          wrapper->_instance->PrepareContainerForItemOverride(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnItemsChanged(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnItemsChanged(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnItemContainerStyleChanged(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::Style^ arg0 = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::UI::Xaml::Style^ arg1 = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          wrapper->_instance->OnItemContainerStyleChanged(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnItemContainerStyleSelectorChanged(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StyleSelector^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StyleSelector^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::StyleSelector^ arg0 = UnwrapStyleSelector(info[0]);
          ::Windows::UI::Xaml::Controls::StyleSelector^ arg1 = UnwrapStyleSelector(info[1]);
          
          wrapper->_instance->OnItemContainerStyleSelectorChanged(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnItemTemplateChanged(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::DataTemplate^ arg0 = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::UI::Xaml::DataTemplate^ arg1 = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          wrapper->_instance->OnItemTemplateChanged(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnItemTemplateSelectorChanged(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::DataTemplateSelector^ arg0 = UnwrapDataTemplateSelector(info[0]);
          ::Windows::UI::Xaml::Controls::DataTemplateSelector^ arg1 = UnwrapDataTemplateSelector(info[1]);
          
          wrapper->_instance->OnItemTemplateSelectorChanged(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnGroupStyleSelectorChanged(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::GroupStyleSelector^ arg0 = UnwrapGroupStyleSelector(info[0]);
          ::Windows::UI::Xaml::Controls::GroupStyleSelector^ arg1 = UnwrapGroupStyleSelector(info[1]);
          
          wrapper->_instance->OnGroupStyleSelectorChanged(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void ItemFromContainer(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Platform::Object^ result;
          result = wrapper->_instance->ItemFromContainer(arg0);
          info.GetReturnValue().Set(CreateOpaqueWrapper(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void ContainerFromItem(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Windows::UI::Xaml::DependencyObject^ result;
          result = wrapper->_instance->ContainerFromItem(arg0);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void IndexFromContainer(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          int result;
          result = wrapper->_instance->IndexFromContainer(arg0);
          info.GetReturnValue().Set(Nan::New<Integer>(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void ContainerFromIndex(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      if (info.Length() == 1
        && info[0]->IsInt32())
      {
        try
        {
          int arg0 = static_cast<int>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          
          ::Windows::UI::Xaml::DependencyObject^ result;
          result = wrapper->_instance->ContainerFromIndex(arg0);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GroupHeaderContainerFromItemContainer(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Windows::UI::Xaml::DependencyObject^ result;
          result = wrapper->_instance->GroupHeaderContainerFromItemContainer(arg0);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void GetItemsOwner(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Windows::UI::Xaml::Controls::ItemsControl^ result;
          result = ::Windows::UI::Xaml::Controls::ItemsControl::GetItemsOwner(arg0);
          info.GetReturnValue().Set(WrapItemsControl(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void ItemsControlFromItemContainer(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Windows::UI::Xaml::Controls::ItemsControl^ result;
          result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemsControlFromItemContainer(arg0);
          info.GetReturnValue().Set(WrapItemsControl(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void ItemsPanelGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ result = wrapper->_instance->ItemsPanel;
        info.GetReturnValue().Set(WrapItemsPanelTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsPanelSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemsPanel = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemsSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->ItemsSource;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsSourceSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemsSource = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ItemTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ItemTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerStyleSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::StyleSelector^ result = wrapper->_instance->ItemContainerStyleSelector;
        info.GetReturnValue().Set(WrapStyleSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerStyleSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StyleSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::StyleSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::StyleSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerStyleSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->ItemContainerStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void GroupStyleSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::GroupStyleSelector^ result = wrapper->_instance->GroupStyleSelector;
        info.GetReturnValue().Set(WrapGroupStyleSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupStyleSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::GroupStyleSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->GroupStyleSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ItemContainerTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DisplayMemberPathGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->DisplayMemberPath;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DisplayMemberPathSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->DisplayMemberPath = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerGeneratorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemContainerGenerator^ result = wrapper->_instance->ItemContainerGenerator;
        info.GetReturnValue().Set(WrapItemContainerGenerator(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemCollection^ result = wrapper->_instance->Items;
        info.GetReturnValue().Set(WrapItemCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::Foundation::Collections::IObservableVector<::Windows::UI::Xaml::Controls::GroupStyle^>^ result = wrapper->_instance->GroupStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "IObservableVector`1", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsGroupingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        bool result = wrapper->_instance->IsGrouping;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsPanelRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Panel^ result = wrapper->_instance->ItemsPanelRoot;
        info.GetReturnValue().Set(WrapPanel(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void DisplayMemberPathPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::DisplayMemberPathProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GroupStyleSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::GroupStyleSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsGroupingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::IsGroupingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerStyleSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerStyleSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemsPanelPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemsPanelProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemsSourcePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemsSourceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ItemsControl^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapItemsControl(::Windows::UI::Xaml::Controls::ItemsControl^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ItemsControl^ UnwrapItemsControl(Local<Value> value);
  };

  Persistent<FunctionTemplate> ItemsControl::s_constructorTemplate;

  v8::Local<v8::Value> WrapItemsControl(::Windows::UI::Xaml::Controls::ItemsControl^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ItemsControl::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ItemsControl^ UnwrapItemsControl(Local<Value> value) {
     return ItemsControl::Unwrap<ItemsControl>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitItemsControl(Local<Object> exports) {
    ItemsControl::Init(exports);
  }

  class MediaTransportControls : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("MediaTransportControls").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFullWindowButtonVisible").ToLocalChecked(), IsFullWindowButtonVisibleGetter, IsFullWindowButtonVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFastRewindEnabled").ToLocalChecked(), IsFastRewindEnabledGetter, IsFastRewindEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isStopEnabled").ToLocalChecked(), IsStopEnabledGetter, IsStopEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFastForwardEnabled").ToLocalChecked(), IsFastForwardEnabledGetter, IsFastForwardEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFastForwardButtonVisible").ToLocalChecked(), IsFastForwardButtonVisibleGetter, IsFastForwardButtonVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isCompact").ToLocalChecked(), IsCompactGetter, IsCompactSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFullWindowEnabled").ToLocalChecked(), IsFullWindowEnabledGetter, IsFullWindowEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isStopButtonVisible").ToLocalChecked(), IsStopButtonVisibleGetter, IsStopButtonVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSeekEnabled").ToLocalChecked(), IsSeekEnabledGetter, IsSeekEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isZoomButtonVisible").ToLocalChecked(), IsZoomButtonVisibleGetter, IsZoomButtonVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPlaybackRateEnabled").ToLocalChecked(), IsPlaybackRateEnabledGetter, IsPlaybackRateEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPlaybackRateButtonVisible").ToLocalChecked(), IsPlaybackRateButtonVisibleGetter, IsPlaybackRateButtonVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFastRewindButtonVisible").ToLocalChecked(), IsFastRewindButtonVisibleGetter, IsFastRewindButtonVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isZoomEnabled").ToLocalChecked(), IsZoomEnabledGetter, IsZoomEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSeekBarVisible").ToLocalChecked(), IsSeekBarVisibleGetter, IsSeekBarVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isVolumeEnabled").ToLocalChecked(), IsVolumeEnabledGetter, IsVolumeEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isVolumeButtonVisible").ToLocalChecked(), IsVolumeButtonVisibleGetter, IsVolumeButtonVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSkipForwardEnabled").ToLocalChecked(), IsSkipForwardEnabledGetter, IsSkipForwardEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fastPlayFallbackBehaviour").ToLocalChecked(), FastPlayFallbackBehaviourGetter, FastPlayFallbackBehaviourSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSkipForwardButtonVisible").ToLocalChecked(), IsSkipForwardButtonVisibleGetter, IsSkipForwardButtonVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSkipBackwardEnabled").ToLocalChecked(), IsSkipBackwardEnabledGetter, IsSkipBackwardEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSkipBackwardButtonVisible").ToLocalChecked(), IsSkipBackwardButtonVisibleGetter, IsSkipBackwardButtonVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPreviousTrackButtonVisible").ToLocalChecked(), IsPreviousTrackButtonVisibleGetter, IsPreviousTrackButtonVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isNextTrackButtonVisible").ToLocalChecked(), IsNextTrackButtonVisibleGetter, IsNextTrackButtonVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isZoomButtonVisibleProperty").ToLocalChecked(), IsZoomButtonVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isCompactProperty").ToLocalChecked(), IsCompactPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFastForwardButtonVisibleProperty").ToLocalChecked(), IsFastForwardButtonVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFastForwardEnabledProperty").ToLocalChecked(), IsFastForwardEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFastRewindButtonVisibleProperty").ToLocalChecked(), IsFastRewindButtonVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFastRewindEnabledProperty").ToLocalChecked(), IsFastRewindEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFullWindowButtonVisibleProperty").ToLocalChecked(), IsFullWindowButtonVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFullWindowEnabledProperty").ToLocalChecked(), IsFullWindowEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPlaybackRateButtonVisibleProperty").ToLocalChecked(), IsPlaybackRateButtonVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPlaybackRateEnabledProperty").ToLocalChecked(), IsPlaybackRateEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isSeekBarVisibleProperty").ToLocalChecked(), IsSeekBarVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isSeekEnabledProperty").ToLocalChecked(), IsSeekEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isStopButtonVisibleProperty").ToLocalChecked(), IsStopButtonVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isStopEnabledProperty").ToLocalChecked(), IsStopEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isVolumeButtonVisibleProperty").ToLocalChecked(), IsVolumeButtonVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isVolumeEnabledProperty").ToLocalChecked(), IsVolumeEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isZoomEnabledProperty").ToLocalChecked(), IsZoomEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fastPlayFallbackBehaviourProperty").ToLocalChecked(), FastPlayFallbackBehaviourPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isNextTrackButtonVisibleProperty").ToLocalChecked(), IsNextTrackButtonVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPreviousTrackButtonVisibleProperty").ToLocalChecked(), IsPreviousTrackButtonVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isSkipBackwardButtonVisibleProperty").ToLocalChecked(), IsSkipBackwardButtonVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isSkipBackwardEnabledProperty").ToLocalChecked(), IsSkipBackwardEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isSkipForwardButtonVisibleProperty").ToLocalChecked(), IsSkipForwardButtonVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isSkipForwardEnabledProperty").ToLocalChecked(), IsSkipForwardEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("MediaTransportControls").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      MediaTransportControls(::Windows::UI::Xaml::Controls::MediaTransportControls^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::MediaTransportControls^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::MediaTransportControls^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::MediaTransportControls();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      MediaTransportControls *wrapperInstance = new MediaTransportControls(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::MediaTransportControls^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::MediaTransportControls^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapMediaTransportControls(winRtInstance));
    }





    static void IsFullWindowButtonVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        bool result = wrapper->_instance->IsFullWindowButtonVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFullWindowButtonVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFullWindowButtonVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFastRewindEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        bool result = wrapper->_instance->IsFastRewindEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFastRewindEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFastRewindEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsStopEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        bool result = wrapper->_instance->IsStopEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsStopEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsStopEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFastForwardEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        bool result = wrapper->_instance->IsFastForwardEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFastForwardEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFastForwardEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFastForwardButtonVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        bool result = wrapper->_instance->IsFastForwardButtonVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFastForwardButtonVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFastForwardButtonVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsCompactGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        bool result = wrapper->_instance->IsCompact;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCompactSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsCompact = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFullWindowEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        bool result = wrapper->_instance->IsFullWindowEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFullWindowEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFullWindowEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsStopButtonVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        bool result = wrapper->_instance->IsStopButtonVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsStopButtonVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsStopButtonVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsSeekEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        bool result = wrapper->_instance->IsSeekEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSeekEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsSeekEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsZoomButtonVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        bool result = wrapper->_instance->IsZoomButtonVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsZoomButtonVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsZoomButtonVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPlaybackRateEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        bool result = wrapper->_instance->IsPlaybackRateEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPlaybackRateEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsPlaybackRateEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPlaybackRateButtonVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        bool result = wrapper->_instance->IsPlaybackRateButtonVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPlaybackRateButtonVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsPlaybackRateButtonVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFastRewindButtonVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        bool result = wrapper->_instance->IsFastRewindButtonVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFastRewindButtonVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFastRewindButtonVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsZoomEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        bool result = wrapper->_instance->IsZoomEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsZoomEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsZoomEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsSeekBarVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        bool result = wrapper->_instance->IsSeekBarVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSeekBarVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsSeekBarVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsVolumeEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        bool result = wrapper->_instance->IsVolumeEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsVolumeEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsVolumeEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsVolumeButtonVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        bool result = wrapper->_instance->IsVolumeButtonVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsVolumeButtonVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsVolumeButtonVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsSkipForwardEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        bool result = wrapper->_instance->IsSkipForwardEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSkipForwardEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsSkipForwardEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FastPlayFallbackBehaviourGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FastPlayFallbackBehaviour result = wrapper->_instance->FastPlayFallbackBehaviour;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FastPlayFallbackBehaviourSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FastPlayFallbackBehaviour winRtValue = static_cast<::Windows::UI::Xaml::Media::FastPlayFallbackBehaviour>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FastPlayFallbackBehaviour = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsSkipForwardButtonVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        bool result = wrapper->_instance->IsSkipForwardButtonVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSkipForwardButtonVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsSkipForwardButtonVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsSkipBackwardEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        bool result = wrapper->_instance->IsSkipBackwardEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSkipBackwardEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsSkipBackwardEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsSkipBackwardButtonVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        bool result = wrapper->_instance->IsSkipBackwardButtonVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSkipBackwardButtonVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsSkipBackwardButtonVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPreviousTrackButtonVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        bool result = wrapper->_instance->IsPreviousTrackButtonVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPreviousTrackButtonVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsPreviousTrackButtonVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsNextTrackButtonVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try  {
        bool result = wrapper->_instance->IsNextTrackButtonVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsNextTrackButtonVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This())) {
        return;
      }

      MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsNextTrackButtonVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsZoomButtonVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::IsZoomButtonVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsCompactPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::IsCompactProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFastForwardButtonVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::IsFastForwardButtonVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFastForwardEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::IsFastForwardEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFastRewindButtonVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::IsFastRewindButtonVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFastRewindEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::IsFastRewindEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFullWindowButtonVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::IsFullWindowButtonVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFullWindowEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::IsFullWindowEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPlaybackRateButtonVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::IsPlaybackRateButtonVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPlaybackRateEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::IsPlaybackRateEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsSeekBarVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::IsSeekBarVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsSeekEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::IsSeekEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsStopButtonVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::IsStopButtonVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsStopEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::IsStopEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsVolumeButtonVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::IsVolumeButtonVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsVolumeEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::IsVolumeEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsZoomEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::IsZoomEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FastPlayFallbackBehaviourPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::FastPlayFallbackBehaviourProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsNextTrackButtonVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::IsNextTrackButtonVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPreviousTrackButtonVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::IsPreviousTrackButtonVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsSkipBackwardButtonVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::IsSkipBackwardButtonVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsSkipBackwardEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::IsSkipBackwardEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsSkipForwardButtonVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::IsSkipForwardButtonVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsSkipForwardEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaTransportControls::IsSkipForwardEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"thumbnailRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ThumbnailRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::MediaTransportControls^, ::Windows::UI::Xaml::Media::MediaTransportControlsThumbnailRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::MediaTransportControls^ arg0, ::Windows::UI::Xaml::Media::MediaTransportControlsThumbnailRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapMediaTransportControls(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "MediaTransportControlsThumbnailRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"thumbnailRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"thumbnailRequested", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->ThumbnailRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaTransportControls *wrapper = MediaTransportControls::Unwrap<MediaTransportControls>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::MediaTransportControls^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapMediaTransportControls(::Windows::UI::Xaml::Controls::MediaTransportControls^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::MediaTransportControls^ UnwrapMediaTransportControls(Local<Value> value);
  };

  Persistent<FunctionTemplate> MediaTransportControls::s_constructorTemplate;

  v8::Local<v8::Value> WrapMediaTransportControls(::Windows::UI::Xaml::Controls::MediaTransportControls^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(MediaTransportControls::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::MediaTransportControls^ UnwrapMediaTransportControls(Local<Value> value) {
     return MediaTransportControls::Unwrap<MediaTransportControls>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitMediaTransportControls(Local<Object> exports) {
    MediaTransportControls::Init(exports);
  }

  class PasswordBox : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("PasswordBox").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "selectAll", SelectAll);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("passwordChar").ToLocalChecked(), PasswordCharGetter, PasswordCharSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("password").ToLocalChecked(), PasswordGetter, PasswordSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxLength").ToLocalChecked(), MaxLengthGetter, MaxLengthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPasswordRevealButtonEnabled").ToLocalChecked(), IsPasswordRevealButtonEnabledGetter, IsPasswordRevealButtonEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerTemplate").ToLocalChecked(), HeaderTemplateGetter, HeaderTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("header").ToLocalChecked(), HeaderGetter, HeaderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectionHighlightColor").ToLocalChecked(), SelectionHighlightColorGetter, SelectionHighlightColorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("preventKeyboardDisplayOnProgrammaticFocus").ToLocalChecked(), PreventKeyboardDisplayOnProgrammaticFocusGetter, PreventKeyboardDisplayOnProgrammaticFocusSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("placeholderText").ToLocalChecked(), PlaceholderTextGetter, PlaceholderTextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textReadingOrder").ToLocalChecked(), TextReadingOrderGetter, TextReadingOrderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("passwordRevealMode").ToLocalChecked(), PasswordRevealModeGetter, PasswordRevealModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("inputScope").ToLocalChecked(), InputScopeGetter, InputScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("passwordProperty").ToLocalChecked(), PasswordPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("passwordCharProperty").ToLocalChecked(), PasswordCharPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxLengthProperty").ToLocalChecked(), MaxLengthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPasswordRevealButtonEnabledProperty").ToLocalChecked(), IsPasswordRevealButtonEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("preventKeyboardDisplayOnProgrammaticFocusProperty").ToLocalChecked(), PreventKeyboardDisplayOnProgrammaticFocusPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectionHighlightColorProperty").ToLocalChecked(), SelectionHighlightColorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerProperty").ToLocalChecked(), HeaderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerTemplateProperty").ToLocalChecked(), HeaderTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("placeholderTextProperty").ToLocalChecked(), PlaceholderTextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textReadingOrderProperty").ToLocalChecked(), TextReadingOrderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("passwordRevealModeProperty").ToLocalChecked(), PasswordRevealModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("inputScopeProperty").ToLocalChecked(), InputScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("PasswordBox").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      PasswordBox(::Windows::UI::Xaml::Controls::PasswordBox^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::PasswordBox^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::PasswordBox^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::PasswordBox();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      PasswordBox *wrapperInstance = new PasswordBox(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::PasswordBox^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::PasswordBox^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapPasswordBox(winRtInstance));
    }


    static void SelectAll(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->SelectAll();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void PasswordCharGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->PasswordChar;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PasswordCharSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->PasswordChar = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PasswordGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Password;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PasswordSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Password = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxLengthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try  {
        int result = wrapper->_instance->MaxLength;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxLengthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->MaxLength = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPasswordRevealButtonEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try  {
        bool result = wrapper->_instance->IsPasswordRevealButtonEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPasswordRevealButtonEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsPasswordRevealButtonEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->HeaderTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Header;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Header = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectionHighlightColorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::SolidColorBrush^ result = wrapper->_instance->SelectionHighlightColor;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "SolidColorBrush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectionHighlightColorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::SolidColorBrush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try {

        ::Windows::UI::Xaml::Media::SolidColorBrush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::SolidColorBrush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectionHighlightColor = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PreventKeyboardDisplayOnProgrammaticFocusGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try  {
        bool result = wrapper->_instance->PreventKeyboardDisplayOnProgrammaticFocus;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PreventKeyboardDisplayOnProgrammaticFocusSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->PreventKeyboardDisplayOnProgrammaticFocus = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PlaceholderTextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->PlaceholderText;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PlaceholderTextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->PlaceholderText = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextReadingOrderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try  {
        ::Windows::UI::Xaml::TextReadingOrder result = wrapper->_instance->TextReadingOrder;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextReadingOrderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try {

        ::Windows::UI::Xaml::TextReadingOrder winRtValue = static_cast<::Windows::UI::Xaml::TextReadingOrder>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TextReadingOrder = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PasswordRevealModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::PasswordRevealMode result = wrapper->_instance->PasswordRevealMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PasswordRevealModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::PasswordRevealMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::PasswordRevealMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->PasswordRevealMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void InputScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::InputScope^ result = wrapper->_instance->InputScope;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "InputScope", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void InputScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::InputScope^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This())) {
        return;
      }

      PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());

      try {

        ::Windows::UI::Xaml::Input::InputScope^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Input::InputScope^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->InputScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void PasswordPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::PasswordBox::PasswordProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PasswordCharPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::PasswordBox::PasswordCharProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxLengthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::PasswordBox::MaxLengthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPasswordRevealButtonEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::PasswordBox::IsPasswordRevealButtonEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PreventKeyboardDisplayOnProgrammaticFocusPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::PasswordBox::PreventKeyboardDisplayOnProgrammaticFocusProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectionHighlightColorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::PasswordBox::SelectionHighlightColorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::PasswordBox::HeaderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::PasswordBox::HeaderTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PlaceholderTextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::PasswordBox::PlaceholderTextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextReadingOrderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::PasswordBox::TextReadingOrderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PasswordRevealModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::PasswordBox::PasswordRevealModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void InputScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::PasswordBox::InputScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"contextMenuOpening", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextMenuOpening::add(
            ref new ::Windows::UI::Xaml::Controls::ContextMenuOpeningEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::ContextMenuEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapContextMenuEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"passwordChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PasswordChanged::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"paste", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Paste::add(
            ref new ::Windows::UI::Xaml::Controls::TextControlPasteEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::TextControlPasteEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapTextControlPasteEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"contextMenuOpening", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"passwordChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"paste", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"contextMenuOpening", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->ContextMenuOpening::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"passwordChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->PasswordChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"paste", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->Paste::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PasswordBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PasswordBox *wrapper = PasswordBox::Unwrap<PasswordBox>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::PasswordBox^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapPasswordBox(::Windows::UI::Xaml::Controls::PasswordBox^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::PasswordBox^ UnwrapPasswordBox(Local<Value> value);
  };

  Persistent<FunctionTemplate> PasswordBox::s_constructorTemplate;

  v8::Local<v8::Value> WrapPasswordBox(::Windows::UI::Xaml::Controls::PasswordBox^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(PasswordBox::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::PasswordBox^ UnwrapPasswordBox(Local<Value> value) {
     return PasswordBox::Unwrap<PasswordBox>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitPasswordBox(Local<Object> exports) {
    PasswordBox::Init(exports);
  }

  class ProgressRing : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ProgressRing").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isActive").ToLocalChecked(), IsActiveGetter, IsActiveSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("templateSettings").ToLocalChecked(), TemplateSettingsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isActiveProperty").ToLocalChecked(), IsActivePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ProgressRing").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ProgressRing(::Windows::UI::Xaml::Controls::ProgressRing^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ProgressRing^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ProgressRing^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ProgressRing();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ProgressRing *wrapperInstance = new ProgressRing(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ProgressRing^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ProgressRing^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapProgressRing(winRtInstance));
    }





    static void IsActiveGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This())) {
        return;
      }

      ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());

      try  {
        bool result = wrapper->_instance->IsActive;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsActiveSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This())) {
        return;
      }

      ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsActive = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateSettingsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This())) {
        return;
      }

      ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::ProgressRingTemplateSettings^ result = wrapper->_instance->TemplateSettings;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "ProgressRingTemplateSettings", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsActivePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ProgressRing::IsActiveProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressRing^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressRing *wrapper = ProgressRing::Unwrap<ProgressRing>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ProgressRing^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapProgressRing(::Windows::UI::Xaml::Controls::ProgressRing^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ProgressRing^ UnwrapProgressRing(Local<Value> value);
  };

  Persistent<FunctionTemplate> ProgressRing::s_constructorTemplate;

  v8::Local<v8::Value> WrapProgressRing(::Windows::UI::Xaml::Controls::ProgressRing^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ProgressRing::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ProgressRing^ UnwrapProgressRing(Local<Value> value) {
     return ProgressRing::Unwrap<ProgressRing>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitProgressRing(Local<Object> exports) {
    ProgressRing::Init(exports);
  }

  class TextBox : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("TextBox").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);

        Local<Function> func;
        Local<FunctionTemplate> funcTemplate;

          
            Nan::SetPrototypeMethod(localRef, "select", Select);
            Nan::SetPrototypeMethod(localRef, "selectAll", SelectAll);
            Nan::SetPrototypeMethod(localRef, "getRectFromCharacterIndex", GetRectFromCharacterIndex);
          

          
            Nan::SetPrototypeMethod(localRef, "getLinguisticAlternativesAsync", GetLinguisticAlternativesAsync);
          

          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textAlignment").ToLocalChecked(), TextAlignmentGetter, TextAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("text").ToLocalChecked(), TextGetter, TextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectionLength").ToLocalChecked(), SelectionLengthGetter, SelectionLengthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedText").ToLocalChecked(), SelectedTextGetter, SelectedTextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxLength").ToLocalChecked(), MaxLengthGetter, MaxLengthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("acceptsReturn").ToLocalChecked(), AcceptsReturnGetter, AcceptsReturnSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextPredictionEnabled").ToLocalChecked(), IsTextPredictionEnabledGetter, IsTextPredictionEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSpellCheckEnabled").ToLocalChecked(), IsSpellCheckEnabledGetter, IsSpellCheckEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectionStart").ToLocalChecked(), SelectionStartGetter, SelectionStartSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isReadOnly").ToLocalChecked(), IsReadOnlyGetter, IsReadOnlySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("inputScope").ToLocalChecked(), InputScopeGetter, InputScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textWrapping").ToLocalChecked(), TextWrappingGetter, TextWrappingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectionHighlightColor").ToLocalChecked(), SelectionHighlightColorGetter, SelectionHighlightColorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("preventKeyboardDisplayOnProgrammaticFocus").ToLocalChecked(), PreventKeyboardDisplayOnProgrammaticFocusGetter, PreventKeyboardDisplayOnProgrammaticFocusSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("placeholderText").ToLocalChecked(), PlaceholderTextGetter, PlaceholderTextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isColorFontEnabled").ToLocalChecked(), IsColorFontEnabledGetter, IsColorFontEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerTemplate").ToLocalChecked(), HeaderTemplateGetter, HeaderTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("header").ToLocalChecked(), HeaderGetter, HeaderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textReadingOrder").ToLocalChecked(), TextReadingOrderGetter, TextReadingOrderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredCandidateWindowAlignment").ToLocalChecked(), DesiredCandidateWindowAlignmentGetter, DesiredCandidateWindowAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectionHighlightColorWhenNotFocused").ToLocalChecked(), SelectionHighlightColorWhenNotFocusedGetter, SelectionHighlightColorWhenNotFocusedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("inputScopeProperty").ToLocalChecked(), InputScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isReadOnlyProperty").ToLocalChecked(), IsReadOnlyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isSpellCheckEnabledProperty").ToLocalChecked(), IsSpellCheckEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextPredictionEnabledProperty").ToLocalChecked(), IsTextPredictionEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxLengthProperty").ToLocalChecked(), MaxLengthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textAlignmentProperty").ToLocalChecked(), TextAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textProperty").ToLocalChecked(), TextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textWrappingProperty").ToLocalChecked(), TextWrappingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("acceptsReturnProperty").ToLocalChecked(), AcceptsReturnPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("placeholderTextProperty").ToLocalChecked(), PlaceholderTextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerProperty").ToLocalChecked(), HeaderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerTemplateProperty").ToLocalChecked(), HeaderTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isColorFontEnabledProperty").ToLocalChecked(), IsColorFontEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("preventKeyboardDisplayOnProgrammaticFocusProperty").ToLocalChecked(), PreventKeyboardDisplayOnProgrammaticFocusPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectionHighlightColorProperty").ToLocalChecked(), SelectionHighlightColorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("desiredCandidateWindowAlignmentProperty").ToLocalChecked(), DesiredCandidateWindowAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textReadingOrderProperty").ToLocalChecked(), TextReadingOrderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectionHighlightColorWhenNotFocusedProperty").ToLocalChecked(), SelectionHighlightColorWhenNotFocusedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("TextBox").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      TextBox(::Windows::UI::Xaml::Controls::TextBox^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::TextBox^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::TextBox^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::TextBox();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      TextBox *wrapperInstance = new TextBox(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::TextBox^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::TextBox^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapTextBox(winRtInstance));
    }

    static void GetLinguisticAlternativesAsync(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      if (info.Length() == 0 || !info[info.Length() -1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: No callback was given")));
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      ::Windows::Foundation::IAsyncOperation<::Windows::Foundation::Collections::IVectorView<::Platform::String^>^>^ op;


      if (info.Length() == 1)
      {
        try
        {
          op = wrapper->_instance->GetLinguisticAlternativesAsync();
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }

      auto opTask = create_task(op);
      uv_async_t* asyncToken = NodeUtils::Async::GetAsyncToken(info[info.Length() -1].As<Function>());

      opTask.then( [asyncToken] (task<::Windows::Foundation::Collections::IVectorView<::Platform::String^>^> t) {
        try {
          auto result = t.get();
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [result](NodeUtils::InvokeCallbackDelegate invokeCallback) {


            Local<Value> error;
            Local<Value> arg1;
            {
              TryCatch tryCatch;
              arg1 = NodeRT::Collections::VectorViewWrapper<::Platform::String^>::CreateVectorViewWrapper(result, 
            [](::Platform::String^ val) -> Local<Value> {
              return NodeRT::Utils::NewString(val->Data());
            },
            [](Local<Value> value) -> bool {
              return value->IsString();
            },
            [](Local<Value> value) -> ::Platform::String^ {
              return ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));
            }
          );
              if (tryCatch.HasCaught())
              {
                error = Nan::To<Object>(tryCatch.Exception()).ToLocalChecked();
              }
              else
              {
                error = Undefined();
              }
              if (arg1.IsEmpty()) arg1 = Undefined();
            }
            Local<Value> args[] = {error, arg1};


            invokeCallback(_countof(args), args);
          });
        } catch (Platform::Exception^ exception) {
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [exception](NodeUtils::InvokeCallbackDelegate invokeCallback) {
            Local<Value> error = NodeRT::Utils::WinRtExceptionToJsError(exception);

            Local<Value> args[] = {error};
            invokeCallback(_countof(args), args);
          });
        }
      });
    }

    static void Select(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      if (info.Length() == 2
        && info[0]->IsInt32()
        && info[1]->IsInt32())
      {
        try
        {
          int arg0 = static_cast<int>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          int arg1 = static_cast<int>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          wrapper->_instance->Select(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void SelectAll(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->SelectAll();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetRectFromCharacterIndex(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      if (info.Length() == 2
        && info[0]->IsInt32()
        && info[1]->IsBoolean())
      {
        try
        {
          int arg0 = static_cast<int>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          bool arg1 = Nan::To<bool>(info[1]).FromMaybe(false);
          
          ::Windows::Foundation::Rect result;
          result = wrapper->_instance->GetRectFromCharacterIndex(arg0, arg1);
          info.GetReturnValue().Set(NodeRT::Utils::RectToJs(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void TextAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try  {
        ::Windows::UI::Xaml::TextAlignment result = wrapper->_instance->TextAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try {

        ::Windows::UI::Xaml::TextAlignment winRtValue = static_cast<::Windows::UI::Xaml::TextAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TextAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Text;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Text = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectionLengthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try  {
        int result = wrapper->_instance->SelectionLength;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectionLengthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SelectionLength = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedTextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->SelectedText;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedTextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->SelectedText = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxLengthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try  {
        int result = wrapper->_instance->MaxLength;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxLengthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->MaxLength = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AcceptsReturnGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try  {
        bool result = wrapper->_instance->AcceptsReturn;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AcceptsReturnSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AcceptsReturn = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTextPredictionEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextPredictionEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextPredictionEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextPredictionEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsSpellCheckEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try  {
        bool result = wrapper->_instance->IsSpellCheckEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSpellCheckEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsSpellCheckEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectionStartGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try  {
        int result = wrapper->_instance->SelectionStart;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectionStartSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SelectionStart = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsReadOnlyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try  {
        bool result = wrapper->_instance->IsReadOnly;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsReadOnlySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsReadOnly = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void InputScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::InputScope^ result = wrapper->_instance->InputScope;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "InputScope", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void InputScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::InputScope^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try {

        ::Windows::UI::Xaml::Input::InputScope^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Input::InputScope^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->InputScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextWrappingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try  {
        ::Windows::UI::Xaml::TextWrapping result = wrapper->_instance->TextWrapping;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextWrappingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try {

        ::Windows::UI::Xaml::TextWrapping winRtValue = static_cast<::Windows::UI::Xaml::TextWrapping>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TextWrapping = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectionHighlightColorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::SolidColorBrush^ result = wrapper->_instance->SelectionHighlightColor;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "SolidColorBrush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectionHighlightColorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::SolidColorBrush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try {

        ::Windows::UI::Xaml::Media::SolidColorBrush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::SolidColorBrush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectionHighlightColor = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PreventKeyboardDisplayOnProgrammaticFocusGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try  {
        bool result = wrapper->_instance->PreventKeyboardDisplayOnProgrammaticFocus;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PreventKeyboardDisplayOnProgrammaticFocusSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->PreventKeyboardDisplayOnProgrammaticFocus = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PlaceholderTextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->PlaceholderText;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PlaceholderTextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->PlaceholderText = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsColorFontEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try  {
        bool result = wrapper->_instance->IsColorFontEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsColorFontEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsColorFontEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->HeaderTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Header;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Header = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextReadingOrderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try  {
        ::Windows::UI::Xaml::TextReadingOrder result = wrapper->_instance->TextReadingOrder;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextReadingOrderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try {

        ::Windows::UI::Xaml::TextReadingOrder winRtValue = static_cast<::Windows::UI::Xaml::TextReadingOrder>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TextReadingOrder = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredCandidateWindowAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::CandidateWindowAlignment result = wrapper->_instance->DesiredCandidateWindowAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DesiredCandidateWindowAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::CandidateWindowAlignment winRtValue = static_cast<::Windows::UI::Xaml::Controls::CandidateWindowAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->DesiredCandidateWindowAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectionHighlightColorWhenNotFocusedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::SolidColorBrush^ result = wrapper->_instance->SelectionHighlightColorWhenNotFocused;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "SolidColorBrush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectionHighlightColorWhenNotFocusedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::SolidColorBrush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This())) {
        return;
      }

      TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());

      try {

        ::Windows::UI::Xaml::Media::SolidColorBrush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::SolidColorBrush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectionHighlightColorWhenNotFocused = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void InputScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBox::InputScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsReadOnlyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBox::IsReadOnlyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsSpellCheckEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBox::IsSpellCheckEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextPredictionEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBox::IsTextPredictionEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxLengthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBox::MaxLengthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBox::TextAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBox::TextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextWrappingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBox::TextWrappingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AcceptsReturnPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBox::AcceptsReturnProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PlaceholderTextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBox::PlaceholderTextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBox::HeaderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBox::HeaderTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsColorFontEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBox::IsColorFontEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PreventKeyboardDisplayOnProgrammaticFocusPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBox::PreventKeyboardDisplayOnProgrammaticFocusProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectionHighlightColorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBox::SelectionHighlightColorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DesiredCandidateWindowAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBox::DesiredCandidateWindowAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextReadingOrderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBox::TextReadingOrderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectionHighlightColorWhenNotFocusedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TextBox::SelectionHighlightColorWhenNotFocusedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"contextMenuOpening", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextMenuOpening::add(
            ref new ::Windows::UI::Xaml::Controls::ContextMenuOpeningEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::ContextMenuEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapContextMenuEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SelectionChanged::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"textChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->TextChanged::add(
            ref new ::Windows::UI::Xaml::Controls::TextChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::TextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapTextChangedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"paste", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Paste::add(
            ref new ::Windows::UI::Xaml::Controls::TextControlPasteEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::TextControlPasteEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapTextControlPasteEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"candidateWindowBoundsChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->CandidateWindowBoundsChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::TextBox^, ::Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::TextBox^ arg0, ::Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapTextBox(arg0);
                  wrappedArg1 = WrapCandidateWindowBoundsChangedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"textChanging", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->TextChanging::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::TextBox^, ::Windows::UI::Xaml::Controls::TextBoxTextChangingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::TextBox^ arg0, ::Windows::UI::Xaml::Controls::TextBoxTextChangingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapTextBox(arg0);
                  wrappedArg1 = WrapTextBoxTextChangingEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"textCompositionChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->TextCompositionChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::TextBox^, ::Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::TextBox^ arg0, ::Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapTextBox(arg0);
                  wrappedArg1 = WrapTextCompositionChangedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"textCompositionEnded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->TextCompositionEnded::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::TextBox^, ::Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::TextBox^ arg0, ::Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapTextBox(arg0);
                  wrappedArg1 = WrapTextCompositionEndedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"textCompositionStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->TextCompositionStarted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::TextBox^, ::Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::TextBox^ arg0, ::Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapTextBox(arg0);
                  wrappedArg1 = WrapTextCompositionStartedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"contextMenuOpening", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"textChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"paste", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"candidateWindowBoundsChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"textChanging", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"textCompositionChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"textCompositionEnded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"textCompositionStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"contextMenuOpening", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->ContextMenuOpening::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->SelectionChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"textChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->TextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"paste", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->Paste::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"candidateWindowBoundsChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->CandidateWindowBoundsChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"textChanging", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->TextChanging::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"textCompositionChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->TextCompositionChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"textCompositionEnded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->TextCompositionEnded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"textCompositionStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->TextCompositionStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TextBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TextBox *wrapper = TextBox::Unwrap<TextBox>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::TextBox^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapTextBox(::Windows::UI::Xaml::Controls::TextBox^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::TextBox^ UnwrapTextBox(Local<Value> value);
  };

  Persistent<FunctionTemplate> TextBox::s_constructorTemplate;

  v8::Local<v8::Value> WrapTextBox(::Windows::UI::Xaml::Controls::TextBox^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(TextBox::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::TextBox^ UnwrapTextBox(Local<Value> value) {
     return TextBox::Unwrap<TextBox>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitTextBox(Local<Object> exports) {
    TextBox::Init(exports);
  }

  class ToggleSwitch : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ToggleSwitch").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "onToggled", OnToggled);
            Nan::SetPrototypeMethod(localRef, "onOnContentChanged", OnOnContentChanged);
            Nan::SetPrototypeMethod(localRef, "onOffContentChanged", OnOffContentChanged);
            Nan::SetPrototypeMethod(localRef, "onHeaderChanged", OnHeaderChanged);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("onContentTemplate").ToLocalChecked(), OnContentTemplateGetter, OnContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("onContent").ToLocalChecked(), OnContentGetter, OnContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("offContentTemplate").ToLocalChecked(), OffContentTemplateGetter, OffContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("offContent").ToLocalChecked(), OffContentGetter, OffContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isOn").ToLocalChecked(), IsOnGetter, IsOnSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerTemplate").ToLocalChecked(), HeaderTemplateGetter, HeaderTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("header").ToLocalChecked(), HeaderGetter, HeaderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("templateSettings").ToLocalChecked(), TemplateSettingsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("headerProperty").ToLocalChecked(), HeaderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerTemplateProperty").ToLocalChecked(), HeaderTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isOnProperty").ToLocalChecked(), IsOnPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("offContentProperty").ToLocalChecked(), OffContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("offContentTemplateProperty").ToLocalChecked(), OffContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("onContentProperty").ToLocalChecked(), OnContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("onContentTemplateProperty").ToLocalChecked(), OnContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ToggleSwitch").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ToggleSwitch(::Windows::UI::Xaml::Controls::ToggleSwitch^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ToggleSwitch^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ToggleSwitch^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ToggleSwitch();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ToggleSwitch *wrapperInstance = new ToggleSwitch(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ToggleSwitch^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ToggleSwitch^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapToggleSwitch(winRtInstance));
    }


    static void OnToggled(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This())) {
        return;
      }

      ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->OnToggled();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnOnContentChanged(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This())) {
        return;
      }

      ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          wrapper->_instance->OnOnContentChanged(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnOffContentChanged(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This())) {
        return;
      }

      ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          wrapper->_instance->OnOffContentChanged(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnHeaderChanged(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This())) {
        return;
      }

      ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          wrapper->_instance->OnHeaderChanged(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void OnContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This())) {
        return;
      }

      ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->OnContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OnContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This())) {
        return;
      }

      ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->OnContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OnContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This())) {
        return;
      }

      ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->OnContent;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OnContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This())) {
        return;
      }

      ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->OnContent = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OffContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This())) {
        return;
      }

      ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->OffContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OffContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This())) {
        return;
      }

      ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->OffContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OffContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This())) {
        return;
      }

      ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->OffContent;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OffContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This())) {
        return;
      }

      ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->OffContent = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsOnGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This())) {
        return;
      }

      ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());

      try  {
        bool result = wrapper->_instance->IsOn;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsOnSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This())) {
        return;
      }

      ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsOn = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This())) {
        return;
      }

      ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->HeaderTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This())) {
        return;
      }

      ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This())) {
        return;
      }

      ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Header;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This())) {
        return;
      }

      ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Header = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateSettingsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This())) {
        return;
      }

      ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::ToggleSwitchTemplateSettings^ result = wrapper->_instance->TemplateSettings;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "ToggleSwitchTemplateSettings", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void HeaderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ToggleSwitch::HeaderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ToggleSwitch::HeaderTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsOnPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ToggleSwitch::IsOnProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OffContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ToggleSwitch::OffContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OffContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ToggleSwitch::OffContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OnContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ToggleSwitch::OnContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OnContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ToggleSwitch::OnContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"toggled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Toggled::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"toggled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"toggled", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->Toggled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleSwitch^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleSwitch *wrapper = ToggleSwitch::Unwrap<ToggleSwitch>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ToggleSwitch^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapToggleSwitch(::Windows::UI::Xaml::Controls::ToggleSwitch^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ToggleSwitch^ UnwrapToggleSwitch(Local<Value> value);
  };

  Persistent<FunctionTemplate> ToggleSwitch::s_constructorTemplate;

  v8::Local<v8::Value> WrapToggleSwitch(::Windows::UI::Xaml::Controls::ToggleSwitch^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ToggleSwitch::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ToggleSwitch^ UnwrapToggleSwitch(Local<Value> value) {
     return ToggleSwitch::Unwrap<ToggleSwitch>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitToggleSwitch(Local<Object> exports) {
    ToggleSwitch::Init(exports);
  }

  class UserControl : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("UserControl").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("UserControl").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      UserControl(::Windows::UI::Xaml::Controls::UserControl^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::UserControl^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::UserControl^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::UserControl();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      UserControl *wrapperInstance = new UserControl(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::UserControl^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::UserControl^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapUserControl(winRtInstance));
    }





    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This())) {
        return;
      }

      UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This())) {
        return;
      }

      UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());

      try {

        ::Windows::UI::Xaml::UIElement^ winRtValue = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::UserControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::UserControl^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapUserControl(::Windows::UI::Xaml::Controls::UserControl^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::UserControl^ UnwrapUserControl(Local<Value> value);
  };

  Persistent<FunctionTemplate> UserControl::s_constructorTemplate;

  v8::Local<v8::Value> WrapUserControl(::Windows::UI::Xaml::Controls::UserControl^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(UserControl::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::UserControl^ UnwrapUserControl(Local<Value> value) {
     return UserControl::Unwrap<UserControl>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitUserControl(Local<Object> exports) {
    UserControl::Init(exports);
  }

  class GroupItem : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("GroupItem").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("GroupItem").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      GroupItem(::Windows::UI::Xaml::Controls::GroupItem^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::GroupItem^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::GroupItem^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::GroupItem();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      GroupItem *wrapperInstance = new GroupItem(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::GroupItem^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::GroupItem^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapGroupItem(winRtInstance));
    }





    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GroupItem *wrapper = GroupItem::Unwrap<GroupItem>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::GroupItem^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapGroupItem(::Windows::UI::Xaml::Controls::GroupItem^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::GroupItem^ UnwrapGroupItem(Local<Value> value);
  };

  Persistent<FunctionTemplate> GroupItem::s_constructorTemplate;

  v8::Local<v8::Value> WrapGroupItem(::Windows::UI::Xaml::Controls::GroupItem^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(GroupItem::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::GroupItem^ UnwrapGroupItem(Local<Value> value) {
     return GroupItem::Unwrap<GroupItem>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitGroupItem(Local<Object> exports) {
    GroupItem::Init(exports);
  }

  class SettingsFlyout : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("SettingsFlyout").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "show", Show);
            Nan::SetPrototypeMethod(localRef, "showIndependent", ShowIndependent);
            Nan::SetPrototypeMethod(localRef, "hide", Hide);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("title").ToLocalChecked(), TitleGetter, TitleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("iconSource").ToLocalChecked(), IconSourceGetter, IconSourceSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerForeground").ToLocalChecked(), HeaderForegroundGetter, HeaderForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerBackground").ToLocalChecked(), HeaderBackgroundGetter, HeaderBackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("templateSettings").ToLocalChecked(), TemplateSettingsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("headerBackgroundProperty").ToLocalChecked(), HeaderBackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerForegroundProperty").ToLocalChecked(), HeaderForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("iconSourceProperty").ToLocalChecked(), IconSourcePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("titleProperty").ToLocalChecked(), TitlePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("SettingsFlyout").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      SettingsFlyout(::Windows::UI::Xaml::Controls::SettingsFlyout^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::SettingsFlyout^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::SettingsFlyout^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::SettingsFlyout();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      SettingsFlyout *wrapperInstance = new SettingsFlyout(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::SettingsFlyout^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::SettingsFlyout^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapSettingsFlyout(winRtInstance));
    }


    static void Show(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This())) {
        return;
      }

      SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->Show();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void ShowIndependent(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This())) {
        return;
      }

      SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->ShowIndependent();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Hide(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This())) {
        return;
      }

      SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->Hide();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void TitleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This())) {
        return;
      }

      SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Title;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TitleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This())) {
        return;
      }

      SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Title = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IconSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This())) {
        return;
      }

      SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ImageSource^ result = wrapper->_instance->IconSource;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "ImageSource", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IconSourceSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::ImageSource^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This())) {
        return;
      }

      SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ImageSource^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::ImageSource^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->IconSource = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This())) {
        return;
      }

      SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->HeaderForeground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This())) {
        return;
      }

      SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderForeground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderBackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This())) {
        return;
      }

      SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->HeaderBackground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderBackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This())) {
        return;
      }

      SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderBackground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateSettingsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This())) {
        return;
      }

      SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::SettingsFlyoutTemplateSettings^ result = wrapper->_instance->TemplateSettings;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "SettingsFlyoutTemplateSettings", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void HeaderBackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SettingsFlyout::HeaderBackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SettingsFlyout::HeaderForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IconSourcePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SettingsFlyout::IconSourceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TitlePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SettingsFlyout::TitleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"backClick", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->BackClick::add(
            ref new ::Windows::UI::Xaml::Controls::BackClickEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::BackClickEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapBackClickEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"backClick", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"backClick", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->BackClick::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SettingsFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SettingsFlyout *wrapper = SettingsFlyout::Unwrap<SettingsFlyout>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::SettingsFlyout^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapSettingsFlyout(::Windows::UI::Xaml::Controls::SettingsFlyout^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::SettingsFlyout^ UnwrapSettingsFlyout(Local<Value> value);
  };

  Persistent<FunctionTemplate> SettingsFlyout::s_constructorTemplate;

  v8::Local<v8::Value> WrapSettingsFlyout(::Windows::UI::Xaml::Controls::SettingsFlyout^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(SettingsFlyout::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::SettingsFlyout^ UnwrapSettingsFlyout(Local<Value> value) {
     return SettingsFlyout::Unwrap<SettingsFlyout>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitSettingsFlyout(Local<Object> exports) {
    SettingsFlyout::Init(exports);
  }

  class ToolTip : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ToolTip").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalOffset").ToLocalChecked(), VerticalOffsetGetter, VerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("placementTarget").ToLocalChecked(), PlacementTargetGetter, PlacementTargetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("placement").ToLocalChecked(), PlacementGetter, PlacementSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isOpen").ToLocalChecked(), IsOpenGetter, IsOpenSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalOffset").ToLocalChecked(), HorizontalOffsetGetter, HorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("templateSettings").ToLocalChecked(), TemplateSettingsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("horizontalOffsetProperty").ToLocalChecked(), HorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isOpenProperty").ToLocalChecked(), IsOpenPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("placementProperty").ToLocalChecked(), PlacementPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("placementTargetProperty").ToLocalChecked(), PlacementTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalOffsetProperty").ToLocalChecked(), VerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ToolTip").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ToolTip(::Windows::UI::Xaml::Controls::ToolTip^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ToolTip^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ToolTip^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ToolTip();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ToolTip *wrapperInstance = new ToolTip(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ToolTip^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ToolTip^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapToolTip(winRtInstance));
    }





    static void VerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This())) {
        return;
      }

      ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());

      try  {
        double result = wrapper->_instance->VerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This())) {
        return;
      }

      ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->VerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PlacementTargetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This())) {
        return;
      }

      ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->PlacementTarget;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PlacementTargetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This())) {
        return;
      }

      ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());

      try {

        ::Windows::UI::Xaml::UIElement^ winRtValue = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->PlacementTarget = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PlacementGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This())) {
        return;
      }

      ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::PlacementMode result = wrapper->_instance->Placement;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PlacementSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This())) {
        return;
      }

      ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::PlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::Primitives::PlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Placement = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsOpenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This())) {
        return;
      }

      ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());

      try  {
        bool result = wrapper->_instance->IsOpen;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsOpenSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This())) {
        return;
      }

      ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsOpen = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This())) {
        return;
      }

      ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());

      try  {
        double result = wrapper->_instance->HorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This())) {
        return;
      }

      ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->HorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateSettingsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This())) {
        return;
      }

      ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::ToolTipTemplateSettings^ result = wrapper->_instance->TemplateSettings;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "ToolTipTemplateSettings", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void HorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ToolTip::HorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsOpenPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ToolTip::IsOpenProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PlacementPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ToolTip::PlacementProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PlacementTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ToolTip::PlacementTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ToolTip::VerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"closed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Closed::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"opened", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Opened::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"closed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"opened", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"closed", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->Closed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"opened", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->Opened::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToolTip^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToolTip *wrapper = ToolTip::Unwrap<ToolTip>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ToolTip^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapToolTip(::Windows::UI::Xaml::Controls::ToolTip^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ToolTip^ UnwrapToolTip(Local<Value> value);
  };

  Persistent<FunctionTemplate> ToolTip::s_constructorTemplate;

  v8::Local<v8::Value> WrapToolTip(::Windows::UI::Xaml::Controls::ToolTip^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ToolTip::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ToolTip^ UnwrapToolTip(Local<Value> value) {
     return ToolTip::Unwrap<ToolTip>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitToolTip(Local<Object> exports) {
    ToolTip::Init(exports);
  }

  class ComboBoxItem : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ComboBoxItem").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSelected").ToLocalChecked(), IsSelectedGetter, IsSelectedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isSelectedProperty").ToLocalChecked(), IsSelectedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ComboBoxItem").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ComboBoxItem(::Windows::UI::Xaml::Controls::ComboBoxItem^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ComboBoxItem^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ComboBoxItem^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ComboBoxItem();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ComboBoxItem *wrapperInstance = new ComboBoxItem(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ComboBoxItem^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ComboBoxItem^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapComboBoxItem(winRtInstance));
    }





    static void IsSelectedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::SelectorItem^>(info.This())) {
        return;
      }

      SelectorItem *wrapper = SelectorItem::Unwrap<SelectorItem>(info.This());

      try  {
        bool result = wrapper->_instance->IsSelected;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSelectedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::SelectorItem^>(info.This())) {
        return;
      }

      SelectorItem *wrapper = SelectorItem::Unwrap<SelectorItem>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsSelected = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsSelectedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::SelectorItem::IsSelectedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBoxItem *wrapper = ComboBoxItem::Unwrap<ComboBoxItem>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ComboBoxItem^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapComboBoxItem(::Windows::UI::Xaml::Controls::ComboBoxItem^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ComboBoxItem^ UnwrapComboBoxItem(Local<Value> value);
  };

  Persistent<FunctionTemplate> ComboBoxItem::s_constructorTemplate;

  v8::Local<v8::Value> WrapComboBoxItem(::Windows::UI::Xaml::Controls::ComboBoxItem^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ComboBoxItem::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ComboBoxItem^ UnwrapComboBoxItem(Local<Value> value) {
     return ComboBoxItem::Unwrap<ComboBoxItem>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitComboBoxItem(Local<Object> exports) {
    ComboBoxItem::Init(exports);
  }

  class FlipViewItem : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("FlipViewItem").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSelected").ToLocalChecked(), IsSelectedGetter, IsSelectedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isSelectedProperty").ToLocalChecked(), IsSelectedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("FlipViewItem").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      FlipViewItem(::Windows::UI::Xaml::Controls::FlipViewItem^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::FlipViewItem^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::FlipViewItem^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::FlipViewItem();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      FlipViewItem *wrapperInstance = new FlipViewItem(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::FlipViewItem^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::FlipViewItem^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapFlipViewItem(winRtInstance));
    }





    static void IsSelectedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::SelectorItem^>(info.This())) {
        return;
      }

      SelectorItem *wrapper = SelectorItem::Unwrap<SelectorItem>(info.This());

      try  {
        bool result = wrapper->_instance->IsSelected;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSelectedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::SelectorItem^>(info.This())) {
        return;
      }

      SelectorItem *wrapper = SelectorItem::Unwrap<SelectorItem>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsSelected = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsSelectedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::SelectorItem::IsSelectedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipViewItem *wrapper = FlipViewItem::Unwrap<FlipViewItem>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::FlipViewItem^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapFlipViewItem(::Windows::UI::Xaml::Controls::FlipViewItem^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::FlipViewItem^ UnwrapFlipViewItem(Local<Value> value);
  };

  Persistent<FunctionTemplate> FlipViewItem::s_constructorTemplate;

  v8::Local<v8::Value> WrapFlipViewItem(::Windows::UI::Xaml::Controls::FlipViewItem^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(FlipViewItem::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::FlipViewItem^ UnwrapFlipViewItem(Local<Value> value) {
     return FlipViewItem::Unwrap<FlipViewItem>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitFlipViewItem(Local<Object> exports) {
    FlipViewItem::Init(exports);
  }

  class ListBoxItem : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ListBoxItem").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSelected").ToLocalChecked(), IsSelectedGetter, IsSelectedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isSelectedProperty").ToLocalChecked(), IsSelectedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ListBoxItem").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ListBoxItem(::Windows::UI::Xaml::Controls::ListBoxItem^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ListBoxItem^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ListBoxItem^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ListBoxItem();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ListBoxItem *wrapperInstance = new ListBoxItem(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ListBoxItem^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ListBoxItem^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapListBoxItem(winRtInstance));
    }





    static void IsSelectedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::SelectorItem^>(info.This())) {
        return;
      }

      SelectorItem *wrapper = SelectorItem::Unwrap<SelectorItem>(info.This());

      try  {
        bool result = wrapper->_instance->IsSelected;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSelectedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::SelectorItem^>(info.This())) {
        return;
      }

      SelectorItem *wrapper = SelectorItem::Unwrap<SelectorItem>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsSelected = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsSelectedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::SelectorItem::IsSelectedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBoxItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBoxItem *wrapper = ListBoxItem::Unwrap<ListBoxItem>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ListBoxItem^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapListBoxItem(::Windows::UI::Xaml::Controls::ListBoxItem^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ListBoxItem^ UnwrapListBoxItem(Local<Value> value);
  };

  Persistent<FunctionTemplate> ListBoxItem::s_constructorTemplate;

  v8::Local<v8::Value> WrapListBoxItem(::Windows::UI::Xaml::Controls::ListBoxItem^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ListBoxItem::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ListBoxItem^ UnwrapListBoxItem(Local<Value> value) {
     return ListBoxItem::Unwrap<ListBoxItem>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitListBoxItem(Local<Object> exports) {
    ListBoxItem::Init(exports);
  }

  class ProgressBar : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ProgressBar").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("showPaused").ToLocalChecked(), ShowPausedGetter, ShowPausedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("showError").ToLocalChecked(), ShowErrorGetter, ShowErrorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isIndeterminate").ToLocalChecked(), IsIndeterminateGetter, IsIndeterminateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("templateSettings").ToLocalChecked(), TemplateSettingsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("value").ToLocalChecked(), ValueGetter, ValueSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("smallChange").ToLocalChecked(), SmallChangeGetter, SmallChangeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minimum").ToLocalChecked(), MinimumGetter, MinimumSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maximum").ToLocalChecked(), MaximumGetter, MaximumSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("largeChange").ToLocalChecked(), LargeChangeGetter, LargeChangeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isIndeterminateProperty").ToLocalChecked(), IsIndeterminatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("showErrorProperty").ToLocalChecked(), ShowErrorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("showPausedProperty").ToLocalChecked(), ShowPausedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("largeChangeProperty").ToLocalChecked(), LargeChangePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maximumProperty").ToLocalChecked(), MaximumPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minimumProperty").ToLocalChecked(), MinimumPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("smallChangeProperty").ToLocalChecked(), SmallChangePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("valueProperty").ToLocalChecked(), ValuePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ProgressBar").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ProgressBar(::Windows::UI::Xaml::Controls::ProgressBar^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ProgressBar^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ProgressBar^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ProgressBar();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ProgressBar *wrapperInstance = new ProgressBar(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ProgressBar^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ProgressBar^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapProgressBar(winRtInstance));
    }





    static void ShowPausedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This())) {
        return;
      }

      ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());

      try  {
        bool result = wrapper->_instance->ShowPaused;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ShowPausedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This())) {
        return;
      }

      ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ShowPaused = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ShowErrorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This())) {
        return;
      }

      ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());

      try  {
        bool result = wrapper->_instance->ShowError;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ShowErrorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This())) {
        return;
      }

      ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ShowError = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsIndeterminateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This())) {
        return;
      }

      ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());

      try  {
        bool result = wrapper->_instance->IsIndeterminate;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsIndeterminateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This())) {
        return;
      }

      ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsIndeterminate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateSettingsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This())) {
        return;
      }

      ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::ProgressBarTemplateSettings^ result = wrapper->_instance->TemplateSettings;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "ProgressBarTemplateSettings", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ValueGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::RangeBase^>(info.This())) {
        return;
      }

      RangeBase *wrapper = RangeBase::Unwrap<RangeBase>(info.This());

      try  {
        double result = wrapper->_instance->Value;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ValueSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::RangeBase^>(info.This())) {
        return;
      }

      RangeBase *wrapper = RangeBase::Unwrap<RangeBase>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Value = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SmallChangeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::RangeBase^>(info.This())) {
        return;
      }

      RangeBase *wrapper = RangeBase::Unwrap<RangeBase>(info.This());

      try  {
        double result = wrapper->_instance->SmallChange;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SmallChangeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::RangeBase^>(info.This())) {
        return;
      }

      RangeBase *wrapper = RangeBase::Unwrap<RangeBase>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->SmallChange = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinimumGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::RangeBase^>(info.This())) {
        return;
      }

      RangeBase *wrapper = RangeBase::Unwrap<RangeBase>(info.This());

      try  {
        double result = wrapper->_instance->Minimum;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinimumSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::RangeBase^>(info.This())) {
        return;
      }

      RangeBase *wrapper = RangeBase::Unwrap<RangeBase>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Minimum = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaximumGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::RangeBase^>(info.This())) {
        return;
      }

      RangeBase *wrapper = RangeBase::Unwrap<RangeBase>(info.This());

      try  {
        double result = wrapper->_instance->Maximum;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaximumSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::RangeBase^>(info.This())) {
        return;
      }

      RangeBase *wrapper = RangeBase::Unwrap<RangeBase>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Maximum = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LargeChangeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::RangeBase^>(info.This())) {
        return;
      }

      RangeBase *wrapper = RangeBase::Unwrap<RangeBase>(info.This());

      try  {
        double result = wrapper->_instance->LargeChange;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LargeChangeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::RangeBase^>(info.This())) {
        return;
      }

      RangeBase *wrapper = RangeBase::Unwrap<RangeBase>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->LargeChange = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsIndeterminatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ProgressBar::IsIndeterminateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ShowErrorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ProgressBar::ShowErrorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ShowPausedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ProgressBar::ShowPausedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LargeChangePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::RangeBase::LargeChangeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaximumPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::RangeBase::MaximumProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinimumPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::RangeBase::MinimumProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SmallChangePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::RangeBase::SmallChangeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ValuePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::RangeBase::ValueProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"valueChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ValueChanged::add(
            ref new ::Windows::UI::Xaml::Controls::Primitives::RangeBaseValueChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::Primitives::RangeBaseValueChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "RangeBaseValueChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"valueChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"valueChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->ValueChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ProgressBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ProgressBar *wrapper = ProgressBar::Unwrap<ProgressBar>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ProgressBar^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapProgressBar(::Windows::UI::Xaml::Controls::ProgressBar^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ProgressBar^ UnwrapProgressBar(Local<Value> value);
  };

  Persistent<FunctionTemplate> ProgressBar::s_constructorTemplate;

  v8::Local<v8::Value> WrapProgressBar(::Windows::UI::Xaml::Controls::ProgressBar^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ProgressBar::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ProgressBar^ UnwrapProgressBar(Local<Value> value) {
     return ProgressBar::Unwrap<ProgressBar>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitProgressBar(Local<Object> exports) {
    ProgressBar::Init(exports);
  }

  class Slider : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("Slider").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("stepFrequency").ToLocalChecked(), StepFrequencyGetter, StepFrequencySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("snapsTo").ToLocalChecked(), SnapsToGetter, SnapsToSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("orientation").ToLocalChecked(), OrientationGetter, OrientationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isThumbToolTipEnabled").ToLocalChecked(), IsThumbToolTipEnabledGetter, IsThumbToolTipEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDirectionReversed").ToLocalChecked(), IsDirectionReversedGetter, IsDirectionReversedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("intermediateValue").ToLocalChecked(), IntermediateValueGetter, IntermediateValueSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tickPlacement").ToLocalChecked(), TickPlacementGetter, TickPlacementSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tickFrequency").ToLocalChecked(), TickFrequencyGetter, TickFrequencySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("thumbToolTipValueConverter").ToLocalChecked(), ThumbToolTipValueConverterGetter, ThumbToolTipValueConverterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerTemplate").ToLocalChecked(), HeaderTemplateGetter, HeaderTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("header").ToLocalChecked(), HeaderGetter, HeaderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("value").ToLocalChecked(), ValueGetter, ValueSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("smallChange").ToLocalChecked(), SmallChangeGetter, SmallChangeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minimum").ToLocalChecked(), MinimumGetter, MinimumSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maximum").ToLocalChecked(), MaximumGetter, MaximumSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("largeChange").ToLocalChecked(), LargeChangeGetter, LargeChangeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("intermediateValueProperty").ToLocalChecked(), IntermediateValuePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDirectionReversedProperty").ToLocalChecked(), IsDirectionReversedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isThumbToolTipEnabledProperty").ToLocalChecked(), IsThumbToolTipEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("orientationProperty").ToLocalChecked(), OrientationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("snapsToProperty").ToLocalChecked(), SnapsToPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("stepFrequencyProperty").ToLocalChecked(), StepFrequencyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("thumbToolTipValueConverterProperty").ToLocalChecked(), ThumbToolTipValueConverterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tickFrequencyProperty").ToLocalChecked(), TickFrequencyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tickPlacementProperty").ToLocalChecked(), TickPlacementPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerTemplateProperty").ToLocalChecked(), HeaderTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerProperty").ToLocalChecked(), HeaderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("largeChangeProperty").ToLocalChecked(), LargeChangePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maximumProperty").ToLocalChecked(), MaximumPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minimumProperty").ToLocalChecked(), MinimumPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("smallChangeProperty").ToLocalChecked(), SmallChangePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("valueProperty").ToLocalChecked(), ValuePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("Slider").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      Slider(::Windows::UI::Xaml::Controls::Slider^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::Slider^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::Slider^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::Slider();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      Slider *wrapperInstance = new Slider(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::Slider^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::Slider^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapSlider(winRtInstance));
    }





    static void StepFrequencyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This())) {
        return;
      }

      Slider *wrapper = Slider::Unwrap<Slider>(info.This());

      try  {
        double result = wrapper->_instance->StepFrequency;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StepFrequencySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This())) {
        return;
      }

      Slider *wrapper = Slider::Unwrap<Slider>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->StepFrequency = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SnapsToGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This())) {
        return;
      }

      Slider *wrapper = Slider::Unwrap<Slider>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::SliderSnapsTo result = wrapper->_instance->SnapsTo;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SnapsToSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This())) {
        return;
      }

      Slider *wrapper = Slider::Unwrap<Slider>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::SliderSnapsTo winRtValue = static_cast<::Windows::UI::Xaml::Controls::Primitives::SliderSnapsTo>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SnapsTo = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OrientationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This())) {
        return;
      }

      Slider *wrapper = Slider::Unwrap<Slider>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Orientation result = wrapper->_instance->Orientation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OrientationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This())) {
        return;
      }

      Slider *wrapper = Slider::Unwrap<Slider>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Orientation winRtValue = static_cast<::Windows::UI::Xaml::Controls::Orientation>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Orientation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsThumbToolTipEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This())) {
        return;
      }

      Slider *wrapper = Slider::Unwrap<Slider>(info.This());

      try  {
        bool result = wrapper->_instance->IsThumbToolTipEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsThumbToolTipEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This())) {
        return;
      }

      Slider *wrapper = Slider::Unwrap<Slider>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsThumbToolTipEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDirectionReversedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This())) {
        return;
      }

      Slider *wrapper = Slider::Unwrap<Slider>(info.This());

      try  {
        bool result = wrapper->_instance->IsDirectionReversed;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDirectionReversedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This())) {
        return;
      }

      Slider *wrapper = Slider::Unwrap<Slider>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDirectionReversed = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IntermediateValueGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This())) {
        return;
      }

      Slider *wrapper = Slider::Unwrap<Slider>(info.This());

      try  {
        double result = wrapper->_instance->IntermediateValue;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IntermediateValueSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This())) {
        return;
      }

      Slider *wrapper = Slider::Unwrap<Slider>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->IntermediateValue = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TickPlacementGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This())) {
        return;
      }

      Slider *wrapper = Slider::Unwrap<Slider>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::TickPlacement result = wrapper->_instance->TickPlacement;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TickPlacementSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This())) {
        return;
      }

      Slider *wrapper = Slider::Unwrap<Slider>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::TickPlacement winRtValue = static_cast<::Windows::UI::Xaml::Controls::Primitives::TickPlacement>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TickPlacement = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TickFrequencyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This())) {
        return;
      }

      Slider *wrapper = Slider::Unwrap<Slider>(info.This());

      try  {
        double result = wrapper->_instance->TickFrequency;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TickFrequencySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This())) {
        return;
      }

      Slider *wrapper = Slider::Unwrap<Slider>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->TickFrequency = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ThumbToolTipValueConverterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This())) {
        return;
      }

      Slider *wrapper = Slider::Unwrap<Slider>(info.This());

      try  {
        ::Windows::UI::Xaml::Data::IValueConverter^ result = wrapper->_instance->ThumbToolTipValueConverter;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Data", "IValueConverter", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ThumbToolTipValueConverterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Data::IValueConverter^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This())) {
        return;
      }

      Slider *wrapper = Slider::Unwrap<Slider>(info.This());

      try {

        ::Windows::UI::Xaml::Data::IValueConverter^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Data::IValueConverter^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ThumbToolTipValueConverter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This())) {
        return;
      }

      Slider *wrapper = Slider::Unwrap<Slider>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->HeaderTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This())) {
        return;
      }

      Slider *wrapper = Slider::Unwrap<Slider>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This())) {
        return;
      }

      Slider *wrapper = Slider::Unwrap<Slider>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Header;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This())) {
        return;
      }

      Slider *wrapper = Slider::Unwrap<Slider>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Header = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ValueGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::RangeBase^>(info.This())) {
        return;
      }

      RangeBase *wrapper = RangeBase::Unwrap<RangeBase>(info.This());

      try  {
        double result = wrapper->_instance->Value;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ValueSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::RangeBase^>(info.This())) {
        return;
      }

      RangeBase *wrapper = RangeBase::Unwrap<RangeBase>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Value = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SmallChangeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::RangeBase^>(info.This())) {
        return;
      }

      RangeBase *wrapper = RangeBase::Unwrap<RangeBase>(info.This());

      try  {
        double result = wrapper->_instance->SmallChange;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SmallChangeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::RangeBase^>(info.This())) {
        return;
      }

      RangeBase *wrapper = RangeBase::Unwrap<RangeBase>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->SmallChange = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinimumGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::RangeBase^>(info.This())) {
        return;
      }

      RangeBase *wrapper = RangeBase::Unwrap<RangeBase>(info.This());

      try  {
        double result = wrapper->_instance->Minimum;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinimumSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::RangeBase^>(info.This())) {
        return;
      }

      RangeBase *wrapper = RangeBase::Unwrap<RangeBase>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Minimum = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaximumGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::RangeBase^>(info.This())) {
        return;
      }

      RangeBase *wrapper = RangeBase::Unwrap<RangeBase>(info.This());

      try  {
        double result = wrapper->_instance->Maximum;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaximumSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::RangeBase^>(info.This())) {
        return;
      }

      RangeBase *wrapper = RangeBase::Unwrap<RangeBase>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Maximum = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LargeChangeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::RangeBase^>(info.This())) {
        return;
      }

      RangeBase *wrapper = RangeBase::Unwrap<RangeBase>(info.This());

      try  {
        double result = wrapper->_instance->LargeChange;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LargeChangeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::RangeBase^>(info.This())) {
        return;
      }

      RangeBase *wrapper = RangeBase::Unwrap<RangeBase>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->LargeChange = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IntermediateValuePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Slider::IntermediateValueProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDirectionReversedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Slider::IsDirectionReversedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsThumbToolTipEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Slider::IsThumbToolTipEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OrientationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Slider::OrientationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SnapsToPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Slider::SnapsToProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StepFrequencyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Slider::StepFrequencyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ThumbToolTipValueConverterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Slider::ThumbToolTipValueConverterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TickFrequencyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Slider::TickFrequencyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TickPlacementPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Slider::TickPlacementProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Slider::HeaderTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Slider::HeaderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LargeChangePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::RangeBase::LargeChangeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaximumPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::RangeBase::MaximumProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinimumPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::RangeBase::MinimumProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SmallChangePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::RangeBase::SmallChangeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ValuePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::RangeBase::ValueProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"valueChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ValueChanged::add(
            ref new ::Windows::UI::Xaml::Controls::Primitives::RangeBaseValueChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::Primitives::RangeBaseValueChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "RangeBaseValueChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Slider *wrapper = Slider::Unwrap<Slider>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"valueChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"valueChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->ValueChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Slider^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Slider *wrapper = Slider::Unwrap<Slider>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::Slider^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapSlider(::Windows::UI::Xaml::Controls::Slider^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::Slider^ UnwrapSlider(Local<Value> value);
  };

  Persistent<FunctionTemplate> Slider::s_constructorTemplate;

  v8::Local<v8::Value> WrapSlider(::Windows::UI::Xaml::Controls::Slider^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(Slider::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::Slider^ UnwrapSlider(Local<Value> value) {
     return Slider::Unwrap<Slider>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitSlider(Local<Object> exports) {
    Slider::Init(exports);
  }

  class Button : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("Button").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flyout").ToLocalChecked(), FlyoutGetter, FlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandParameter").ToLocalChecked(), CommandParameterGetter, CommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("command").ToLocalChecked(), CommandGetter, CommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clickMode").ToLocalChecked(), ClickModeGetter, ClickModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPointerOver").ToLocalChecked(), IsPointerOverGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPressed").ToLocalChecked(), IsPressedGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("flyoutProperty").ToLocalChecked(), FlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clickModeProperty").ToLocalChecked(), ClickModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandParameterProperty").ToLocalChecked(), CommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandProperty").ToLocalChecked(), CommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPointerOverProperty").ToLocalChecked(), IsPointerOverPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPressedProperty").ToLocalChecked(), IsPressedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("Button").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      Button(::Windows::UI::Xaml::Controls::Button^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::Button^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::Button^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::Button();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      Button *wrapperInstance = new Button(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::Button^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::Button^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapButton(winRtInstance));
    }





    static void FlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This())) {
        return;
      }

      Button *wrapper = Button::Unwrap<Button>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->Flyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This())) {
        return;
      }

      Button *wrapper = Button::Unwrap<Button>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Flyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->CommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->Command;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Command = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClickModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ClickMode result = wrapper->_instance->ClickMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClickModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ClickMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ClickMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ClickMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPointerOverGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPointerOver;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPressedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPressed;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void FlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Button::FlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClickModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::ClickModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPointerOverPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPointerOverProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPressedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPressedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Click::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Button *wrapper = Button::Unwrap<Button>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->Click::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Button *wrapper = Button::Unwrap<Button>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::Button^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapButton(::Windows::UI::Xaml::Controls::Button^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::Button^ UnwrapButton(Local<Value> value);
  };

  Persistent<FunctionTemplate> Button::s_constructorTemplate;

  v8::Local<v8::Value> WrapButton(::Windows::UI::Xaml::Controls::Button^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(Button::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::Button^ UnwrapButton(Local<Value> value) {
     return Button::Unwrap<Button>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitButton(Local<Object> exports) {
    Button::Init(exports);
  }

  class HyperlinkButton : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("HyperlinkButton").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("navigateUri").ToLocalChecked(), NavigateUriGetter, NavigateUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandParameter").ToLocalChecked(), CommandParameterGetter, CommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("command").ToLocalChecked(), CommandGetter, CommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clickMode").ToLocalChecked(), ClickModeGetter, ClickModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPointerOver").ToLocalChecked(), IsPointerOverGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPressed").ToLocalChecked(), IsPressedGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("navigateUriProperty").ToLocalChecked(), NavigateUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clickModeProperty").ToLocalChecked(), ClickModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandParameterProperty").ToLocalChecked(), CommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandProperty").ToLocalChecked(), CommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPointerOverProperty").ToLocalChecked(), IsPointerOverPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPressedProperty").ToLocalChecked(), IsPressedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("HyperlinkButton").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      HyperlinkButton(::Windows::UI::Xaml::Controls::HyperlinkButton^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::HyperlinkButton^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::HyperlinkButton^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::HyperlinkButton();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      HyperlinkButton *wrapperInstance = new HyperlinkButton(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::HyperlinkButton^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::HyperlinkButton^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapHyperlinkButton(winRtInstance));
    }





    static void NavigateUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This())) {
        return;
      }

      HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->NavigateUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NavigateUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This())) {
        return;
      }

      HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->NavigateUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->CommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->Command;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Command = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClickModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ClickMode result = wrapper->_instance->ClickMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClickModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ClickMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ClickMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ClickMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPointerOverGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPointerOver;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPressedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPressed;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void NavigateUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::HyperlinkButton::NavigateUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClickModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::ClickModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPointerOverPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPointerOverProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPressedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPressedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Click::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->Click::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HyperlinkButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HyperlinkButton *wrapper = HyperlinkButton::Unwrap<HyperlinkButton>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::HyperlinkButton^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapHyperlinkButton(::Windows::UI::Xaml::Controls::HyperlinkButton^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::HyperlinkButton^ UnwrapHyperlinkButton(Local<Value> value);
  };

  Persistent<FunctionTemplate> HyperlinkButton::s_constructorTemplate;

  v8::Local<v8::Value> WrapHyperlinkButton(::Windows::UI::Xaml::Controls::HyperlinkButton^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(HyperlinkButton::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::HyperlinkButton^ UnwrapHyperlinkButton(Local<Value> value) {
     return HyperlinkButton::Unwrap<HyperlinkButton>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitHyperlinkButton(Local<Object> exports) {
    HyperlinkButton::Init(exports);
  }

  class ListViewBase : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ListViewBase").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);

        Local<Function> func;
        Local<FunctionTemplate> funcTemplate;

          
            Nan::SetPrototypeMethod(localRef, "selectRange", SelectRange);
            Nan::SetPrototypeMethod(localRef, "deselectRange", DeselectRange);
            Nan::SetPrototypeMethod(localRef, "isDragSource", IsDragSource);
            Nan::SetPrototypeMethod(localRef, "prepareConnectedAnimation", PrepareConnectedAnimation);
            Nan::SetPrototypeMethod(localRef, "scrollIntoView", ScrollIntoView);
            Nan::SetPrototypeMethod(localRef, "selectAll", SelectAll);
            Nan::SetPrototypeMethod(localRef, "initializeViewChange", InitializeViewChange);
            Nan::SetPrototypeMethod(localRef, "completeViewChange", CompleteViewChange);
            Nan::SetPrototypeMethod(localRef, "makeVisible", MakeVisible);
            Nan::SetPrototypeMethod(localRef, "startViewChangeFrom", StartViewChangeFrom);
            Nan::SetPrototypeMethod(localRef, "startViewChangeTo", StartViewChangeTo);
            Nan::SetPrototypeMethod(localRef, "completeViewChangeFrom", CompleteViewChangeFrom);
            Nan::SetPrototypeMethod(localRef, "completeViewChangeTo", CompleteViewChangeTo);
            Nan::SetPrototypeMethod(localRef, "setDesiredContainerUpdateDuration", SetDesiredContainerUpdateDuration);
          

          
            Nan::SetPrototypeMethod(localRef, "tryStartConnectedAnimationAsync", TryStartConnectedAnimationAsync);
            Nan::SetPrototypeMethod(localRef, "loadMoreItemsAsync", LoadMoreItemsAsync);
          

          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectionMode").ToLocalChecked(), SelectionModeGetter, SelectionModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSwipeEnabled").ToLocalChecked(), IsSwipeEnabledGetter, IsSwipeEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isItemClickEnabled").ToLocalChecked(), IsItemClickEnabledGetter, IsItemClickEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("incrementalLoadingTrigger").ToLocalChecked(), IncrementalLoadingTriggerGetter, IncrementalLoadingTriggerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("incrementalLoadingThreshold").ToLocalChecked(), IncrementalLoadingThresholdGetter, IncrementalLoadingThresholdSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDragItems").ToLocalChecked(), CanDragItemsGetter, CanDragItemsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerTransitions").ToLocalChecked(), HeaderTransitionsGetter, HeaderTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerTemplate").ToLocalChecked(), HeaderTemplateGetter, HeaderTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("header").ToLocalChecked(), HeaderGetter, HeaderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataFetchSize").ToLocalChecked(), DataFetchSizeGetter, DataFetchSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canReorderItems").ToLocalChecked(), CanReorderItemsGetter, CanReorderItemsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedItems").ToLocalChecked(), SelectedItemsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("footer").ToLocalChecked(), FooterGetter, FooterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("footerTemplate").ToLocalChecked(), FooterTemplateGetter, FooterTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("showsScrollingPlaceholders").ToLocalChecked(), ShowsScrollingPlaceholdersGetter, ShowsScrollingPlaceholdersSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("footerTransitions").ToLocalChecked(), FooterTransitionsGetter, FooterTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("reorderMode").ToLocalChecked(), ReorderModeGetter, ReorderModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isMultiSelectCheckBoxEnabled").ToLocalChecked(), IsMultiSelectCheckBoxEnabledGetter, IsMultiSelectCheckBoxEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedRanges").ToLocalChecked(), SelectedRangesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("singleSelectionFollowsFocus").ToLocalChecked(), SingleSelectionFollowsFocusGetter, SingleSelectionFollowsFocusSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("semanticZoomOwner").ToLocalChecked(), SemanticZoomOwnerGetter, SemanticZoomOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isZoomedInView").ToLocalChecked(), IsZoomedInViewGetter, IsZoomedInViewSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isActiveView").ToLocalChecked(), IsActiveViewGetter, IsActiveViewSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedValuePath").ToLocalChecked(), SelectedValuePathGetter, SelectedValuePathSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedValue").ToLocalChecked(), SelectedValueGetter, SelectedValueSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedItem").ToLocalChecked(), SelectedItemGetter, SelectedItemSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedIndex").ToLocalChecked(), SelectedIndexGetter, SelectedIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSynchronizedWithCurrentItem").ToLocalChecked(), IsSynchronizedWithCurrentItemGetter, IsSynchronizedWithCurrentItemSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsPanel").ToLocalChecked(), ItemsPanelGetter, ItemsPanelSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsSource").ToLocalChecked(), ItemsSourceGetter, ItemsSourceSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemTemplateSelector").ToLocalChecked(), ItemTemplateSelectorGetter, ItemTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemTemplate").ToLocalChecked(), ItemTemplateGetter, ItemTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerStyleSelector").ToLocalChecked(), ItemContainerStyleSelectorGetter, ItemContainerStyleSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerStyle").ToLocalChecked(), ItemContainerStyleGetter, ItemContainerStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupStyleSelector").ToLocalChecked(), GroupStyleSelectorGetter, GroupStyleSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerTransitions").ToLocalChecked(), ItemContainerTransitionsGetter, ItemContainerTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("displayMemberPath").ToLocalChecked(), DisplayMemberPathGetter, DisplayMemberPathSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerGenerator").ToLocalChecked(), ItemContainerGeneratorGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("items").ToLocalChecked(), ItemsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupStyle").ToLocalChecked(), GroupStyleGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isGrouping").ToLocalChecked(), IsGroupingGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsPanelRoot").ToLocalChecked(), ItemsPanelRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isSwipeEnabledProperty").ToLocalChecked(), IsSwipeEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragItemsProperty").ToLocalChecked(), CanDragItemsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canReorderItemsProperty").ToLocalChecked(), CanReorderItemsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataFetchSizeProperty").ToLocalChecked(), DataFetchSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerProperty").ToLocalChecked(), HeaderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerTemplateProperty").ToLocalChecked(), HeaderTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerTransitionsProperty").ToLocalChecked(), HeaderTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("incrementalLoadingThresholdProperty").ToLocalChecked(), IncrementalLoadingThresholdPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("incrementalLoadingTriggerProperty").ToLocalChecked(), IncrementalLoadingTriggerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isActiveViewProperty").ToLocalChecked(), IsActiveViewPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isItemClickEnabledProperty").ToLocalChecked(), IsItemClickEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isZoomedInViewProperty").ToLocalChecked(), IsZoomedInViewPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectionModeProperty").ToLocalChecked(), SelectionModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("semanticZoomOwnerProperty").ToLocalChecked(), SemanticZoomOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("footerProperty").ToLocalChecked(), FooterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("footerTemplateProperty").ToLocalChecked(), FooterTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("footerTransitionsProperty").ToLocalChecked(), FooterTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("showsScrollingPlaceholdersProperty").ToLocalChecked(), ShowsScrollingPlaceholdersPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("reorderModeProperty").ToLocalChecked(), ReorderModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isMultiSelectCheckBoxEnabledProperty").ToLocalChecked(), IsMultiSelectCheckBoxEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("singleSelectionFollowsFocusProperty").ToLocalChecked(), SingleSelectionFollowsFocusPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isSynchronizedWithCurrentItemProperty").ToLocalChecked(), IsSynchronizedWithCurrentItemPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedIndexProperty").ToLocalChecked(), SelectedIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedItemProperty").ToLocalChecked(), SelectedItemPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedValuePathProperty").ToLocalChecked(), SelectedValuePathPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedValueProperty").ToLocalChecked(), SelectedValuePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("displayMemberPathProperty").ToLocalChecked(), DisplayMemberPathPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("groupStyleSelectorProperty").ToLocalChecked(), GroupStyleSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isGroupingProperty").ToLocalChecked(), IsGroupingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerStyleProperty").ToLocalChecked(), ItemContainerStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerStyleSelectorProperty").ToLocalChecked(), ItemContainerStyleSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerTransitionsProperty").ToLocalChecked(), ItemContainerTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemTemplateProperty").ToLocalChecked(), ItemTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemTemplateSelectorProperty").ToLocalChecked(), ItemTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemsPanelProperty").ToLocalChecked(), ItemsPanelPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemsSourceProperty").ToLocalChecked(), ItemsSourcePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ListViewBase").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ListViewBase(::Windows::UI::Xaml::Controls::ListViewBase^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ListViewBase^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ListViewBase^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ListViewBase *wrapperInstance = new ListViewBase(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ListViewBase^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ListViewBase^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapListViewBase(winRtInstance));
    }

    static void TryStartConnectedAnimationAsync(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      if (info.Length() == 0 || !info[info.Length() -1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: No callback was given")));
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      ::Windows::Foundation::IAsyncOperation<bool>^ op;


      if (info.Length() == 4
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::ConnectedAnimation^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1])
        && info[2]->IsString())
      {
        try
        {
          ::Windows::UI::Xaml::Media::Animation::ConnectedAnimation^ arg0 = dynamic_cast<::Windows::UI::Xaml::Media::Animation::ConnectedAnimation^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          Platform::String^ arg2 = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), info[2])));
          
          op = wrapper->_instance->TryStartConnectedAnimationAsync(arg0,arg1,arg2);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }

      auto opTask = create_task(op);
      uv_async_t* asyncToken = NodeUtils::Async::GetAsyncToken(info[info.Length() -1].As<Function>());

      opTask.then( [asyncToken] (task<bool> t) {
        try {
          auto result = t.get();
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [result](NodeUtils::InvokeCallbackDelegate invokeCallback) {


            Local<Value> error;
            Local<Value> arg1;
            {
              TryCatch tryCatch;
              arg1 = Nan::New<Boolean>(result);
              if (tryCatch.HasCaught())
              {
                error = Nan::To<Object>(tryCatch.Exception()).ToLocalChecked();
              }
              else
              {
                error = Undefined();
              }
              if (arg1.IsEmpty()) arg1 = Undefined();
            }
            Local<Value> args[] = {error, arg1};


            invokeCallback(_countof(args), args);
          });
        } catch (Platform::Exception^ exception) {
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [exception](NodeUtils::InvokeCallbackDelegate invokeCallback) {
            Local<Value> error = NodeRT::Utils::WinRtExceptionToJsError(exception);

            Local<Value> args[] = {error};
            invokeCallback(_countof(args), args);
          });
        }
      });
    }
    static void LoadMoreItemsAsync(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      if (info.Length() == 0 || !info[info.Length() -1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: No callback was given")));
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      ::Windows::Foundation::IAsyncOperation<::Windows::UI::Xaml::Data::LoadMoreItemsResult>^ op;


      if (info.Length() == 1)
      {
        try
        {
          op = wrapper->_instance->LoadMoreItemsAsync();
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }

      auto opTask = create_task(op);
      uv_async_t* asyncToken = NodeUtils::Async::GetAsyncToken(info[info.Length() -1].As<Function>());

      opTask.then( [asyncToken] (task<::Windows::UI::Xaml::Data::LoadMoreItemsResult> t) {
        try {
          auto result = t.get();
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [result](NodeUtils::InvokeCallbackDelegate invokeCallback) {


            Local<Value> error;
            Local<Value> arg1;
            {
              TryCatch tryCatch;
              arg1 = LoadMoreItemsResultToJsObject(result);
              if (tryCatch.HasCaught())
              {
                error = Nan::To<Object>(tryCatch.Exception()).ToLocalChecked();
              }
              else
              {
                error = Undefined();
              }
              if (arg1.IsEmpty()) arg1 = Undefined();
            }
            Local<Value> args[] = {error, arg1};


            invokeCallback(_countof(args), args);
          });
        } catch (Platform::Exception^ exception) {
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [exception](NodeUtils::InvokeCallbackDelegate invokeCallback) {
            Local<Value> error = NodeRT::Utils::WinRtExceptionToJsError(exception);

            Local<Value> args[] = {error};
            invokeCallback(_countof(args), args);
          });
        }
      });
    }

    static void SelectRange(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Data::ItemIndexRange^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Data::ItemIndexRange^ arg0 = dynamic_cast<::Windows::UI::Xaml::Data::ItemIndexRange^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->SelectRange(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void DeselectRange(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Data::ItemIndexRange^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Data::ItemIndexRange^ arg0 = dynamic_cast<::Windows::UI::Xaml::Data::ItemIndexRange^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->DeselectRange(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void IsDragSource(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          bool result;
          result = wrapper->_instance->IsDragSource();
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void PrepareConnectedAnimation(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      if (info.Length() == 3
        && info[0]->IsString()
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1])
        && info[2]->IsString())
      {
        try
        {
          Platform::String^ arg0 = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), info[0])));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          Platform::String^ arg2 = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), info[2])));
          
          ::Windows::UI::Xaml::Media::Animation::ConnectedAnimation^ result;
          result = wrapper->_instance->PrepareConnectedAnimation(arg0, arg1, arg2);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "ConnectedAnimation", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void ScrollIntoView(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->ScrollIntoView(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0])
        && info[1]->IsInt32())
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::UI::Xaml::Controls::ScrollIntoViewAlignment arg1 = static_cast<::Windows::UI::Xaml::Controls::ScrollIntoViewAlignment>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          wrapper->_instance->ScrollIntoView(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void SelectAll(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->SelectAll();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void InitializeViewChange(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->InitializeViewChange();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void CompleteViewChange(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->CompleteViewChange();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void MakeVisible(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg0 = UnwrapSemanticZoomLocation(info[0]);
          
          wrapper->_instance->MakeVisible(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void StartViewChangeFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg0 = UnwrapSemanticZoomLocation(info[0]);
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg1 = UnwrapSemanticZoomLocation(info[1]);
          
          wrapper->_instance->StartViewChangeFrom(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void StartViewChangeTo(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg0 = UnwrapSemanticZoomLocation(info[0]);
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg1 = UnwrapSemanticZoomLocation(info[1]);
          
          wrapper->_instance->StartViewChangeTo(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void CompleteViewChangeFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg0 = UnwrapSemanticZoomLocation(info[0]);
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg1 = UnwrapSemanticZoomLocation(info[1]);
          
          wrapper->_instance->CompleteViewChangeFrom(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void CompleteViewChangeTo(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg0 = UnwrapSemanticZoomLocation(info[0]);
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg1 = UnwrapSemanticZoomLocation(info[1]);
          
          wrapper->_instance->CompleteViewChangeTo(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void SetDesiredContainerUpdateDuration(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      if (info.Length() == 1
        && info[0]->IsNumber())
      {
        try
        {
          ::Windows::Foundation::TimeSpan arg0 = NodeRT::Utils::TimeSpanFromMilli(Nan::To<int64_t>(info[0]).FromMaybe(0));
          
          wrapper->_instance->SetDesiredContainerUpdateDuration(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void SelectionModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ListViewSelectionMode result = wrapper->_instance->SelectionMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectionModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ListViewSelectionMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ListViewSelectionMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SelectionMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsSwipeEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsSwipeEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSwipeEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsSwipeEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsItemClickEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsItemClickEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsItemClickEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsItemClickEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IncrementalLoadingTriggerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::IncrementalLoadingTrigger result = wrapper->_instance->IncrementalLoadingTrigger;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IncrementalLoadingTriggerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::IncrementalLoadingTrigger winRtValue = static_cast<::Windows::UI::Xaml::Controls::IncrementalLoadingTrigger>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->IncrementalLoadingTrigger = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IncrementalLoadingThresholdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        double result = wrapper->_instance->IncrementalLoadingThreshold;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IncrementalLoadingThresholdSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->IncrementalLoadingThreshold = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->CanDragItems;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragItemsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDragItems = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->HeaderTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->HeaderTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Header;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Header = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataFetchSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        double result = wrapper->_instance->DataFetchSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataFetchSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->DataFetchSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanReorderItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->CanReorderItems;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanReorderItemsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanReorderItems = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Platform::Object^>^ result = wrapper->_instance->SelectedItems;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Platform::Object^>::CreateVectorWrapper(result, 
            [](::Platform::Object^ val) -> Local<Value> {
              return CreateOpaqueWrapper(val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value);
            },
            [](Local<Value> value) -> ::Platform::Object^ {
              return dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FooterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Footer;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FooterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Footer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FooterTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->FooterTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FooterTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FooterTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ShowsScrollingPlaceholdersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->ShowsScrollingPlaceholders;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ShowsScrollingPlaceholdersSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ShowsScrollingPlaceholders = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FooterTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->FooterTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FooterTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FooterTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ReorderModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ListViewReorderMode result = wrapper->_instance->ReorderMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ReorderModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ListViewReorderMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ListViewReorderMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ReorderMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsMultiSelectCheckBoxEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsMultiSelectCheckBoxEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsMultiSelectCheckBoxEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsMultiSelectCheckBoxEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedRangesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Data::ItemIndexRange^>^ result = wrapper->_instance->SelectedRanges;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Data::ItemIndexRange^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Data::ItemIndexRange^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Data", "ItemIndexRange", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Data::ItemIndexRange^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Data::ItemIndexRange^ {
              return dynamic_cast<::Windows::UI::Xaml::Data::ItemIndexRange^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SingleSelectionFollowsFocusGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->SingleSelectionFollowsFocus;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SingleSelectionFollowsFocusSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->SingleSelectionFollowsFocus = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SemanticZoomOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::SemanticZoom^ result = wrapper->_instance->SemanticZoomOwner;
        info.GetReturnValue().Set(WrapSemanticZoom(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SemanticZoomOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::SemanticZoom^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::SemanticZoom^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SemanticZoomOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsZoomedInViewGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsZoomedInView;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsZoomedInViewSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsZoomedInView = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsActiveViewGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsActiveView;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsActiveViewSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsActiveView = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedValuePathGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->SelectedValuePath;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedValuePathSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->SelectedValuePath = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedValueGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->SelectedValue;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedValueSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectedValue = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->SelectedItem;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedItemSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectedItem = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        int result = wrapper->_instance->SelectedIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SelectedIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsSynchronizedWithCurrentItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        ::Platform::IBox<bool>^ result = wrapper->_instance->IsSynchronizedWithCurrentItem;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Boolean>(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSynchronizedWithCurrentItemSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        ::Platform::IBox<bool>^ winRtValue = ref new ::Platform::Box<bool>(Nan::To<bool>(value).FromMaybe(false));

        wrapper->_instance->IsSynchronizedWithCurrentItem = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemsPanelGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ result = wrapper->_instance->ItemsPanel;
        info.GetReturnValue().Set(WrapItemsPanelTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsPanelSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemsPanel = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemsSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->ItemsSource;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsSourceSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemsSource = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ItemTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ItemTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerStyleSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::StyleSelector^ result = wrapper->_instance->ItemContainerStyleSelector;
        info.GetReturnValue().Set(WrapStyleSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerStyleSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StyleSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::StyleSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::StyleSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerStyleSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->ItemContainerStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void GroupStyleSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::GroupStyleSelector^ result = wrapper->_instance->GroupStyleSelector;
        info.GetReturnValue().Set(WrapGroupStyleSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupStyleSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::GroupStyleSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->GroupStyleSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ItemContainerTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DisplayMemberPathGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->DisplayMemberPath;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DisplayMemberPathSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->DisplayMemberPath = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerGeneratorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemContainerGenerator^ result = wrapper->_instance->ItemContainerGenerator;
        info.GetReturnValue().Set(WrapItemContainerGenerator(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemCollection^ result = wrapper->_instance->Items;
        info.GetReturnValue().Set(WrapItemCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::Foundation::Collections::IObservableVector<::Windows::UI::Xaml::Controls::GroupStyle^>^ result = wrapper->_instance->GroupStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "IObservableVector`1", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsGroupingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        bool result = wrapper->_instance->IsGrouping;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsPanelRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Panel^ result = wrapper->_instance->ItemsPanelRoot;
        info.GetReturnValue().Set(WrapPanel(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsSwipeEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::IsSwipeEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragItemsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::CanDragItemsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanReorderItemsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::CanReorderItemsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataFetchSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::DataFetchSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::HeaderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::HeaderTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::HeaderTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IncrementalLoadingThresholdPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::IncrementalLoadingThresholdProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IncrementalLoadingTriggerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::IncrementalLoadingTriggerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsActiveViewPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::IsActiveViewProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsItemClickEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::IsItemClickEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsZoomedInViewPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::IsZoomedInViewProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectionModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::SelectionModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SemanticZoomOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::SemanticZoomOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FooterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::FooterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FooterTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::FooterTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FooterTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::FooterTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ShowsScrollingPlaceholdersPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::ShowsScrollingPlaceholdersProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ReorderModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::ReorderModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsMultiSelectCheckBoxEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::IsMultiSelectCheckBoxEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SingleSelectionFollowsFocusPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::SingleSelectionFollowsFocusProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsSynchronizedWithCurrentItemPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::IsSynchronizedWithCurrentItemProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedItemPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedItemProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedValuePathPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedValuePathProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedValuePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedValueProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DisplayMemberPathPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::DisplayMemberPathProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GroupStyleSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::GroupStyleSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsGroupingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::IsGroupingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerStyleSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerStyleSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemsPanelPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemsPanelProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemsSourcePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemsSourceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"dragItemsStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragItemsStarting::add(
            ref new ::Windows::UI::Xaml::Controls::DragItemsStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::DragItemsStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapDragItemsStartingEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"itemClick", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ItemClick::add(
            ref new ::Windows::UI::Xaml::Controls::ItemClickEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::ItemClickEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapItemClickEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"containerContentChanging", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContainerContentChanging::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ListViewBase^, ::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::ListViewBase^ arg0, ::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapListViewBase(arg0);
                  wrappedArg1 = WrapContainerContentChangingEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"choosingGroupHeaderContainer", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ChoosingGroupHeaderContainer::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ListViewBase^, ::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::ListViewBase^ arg0, ::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapListViewBase(arg0);
                  wrappedArg1 = WrapChoosingGroupHeaderContainerEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"choosingItemContainer", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ChoosingItemContainer::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ListViewBase^, ::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::ListViewBase^ arg0, ::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapListViewBase(arg0);
                  wrappedArg1 = WrapChoosingItemContainerEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragItemsCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragItemsCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ListViewBase^, ::Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::ListViewBase^ arg0, ::Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapListViewBase(arg0);
                  wrappedArg1 = WrapDragItemsCompletedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SelectionChanged::add(
            ref new ::Windows::UI::Xaml::Controls::SelectionChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapSelectionChangedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"dragItemsStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"itemClick", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"containerContentChanging", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"choosingGroupHeaderContainer", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"choosingItemContainer", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragItemsCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"dragItemsStarting", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->DragItemsStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"itemClick", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->ItemClick::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"containerContentChanging", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->ContainerContentChanging::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"choosingGroupHeaderContainer", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->ChoosingGroupHeaderContainer::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"choosingItemContainer", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->ChoosingItemContainer::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragItemsCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->DragItemsCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->SelectionChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ListViewBase^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapListViewBase(::Windows::UI::Xaml::Controls::ListViewBase^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ListViewBase^ UnwrapListViewBase(Local<Value> value);
  };

  Persistent<FunctionTemplate> ListViewBase::s_constructorTemplate;

  v8::Local<v8::Value> WrapListViewBase(::Windows::UI::Xaml::Controls::ListViewBase^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ListViewBase::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ListViewBase^ UnwrapListViewBase(Local<Value> value) {
     return ListViewBase::Unwrap<ListViewBase>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitListViewBase(Local<Object> exports) {
    ListViewBase::Init(exports);
  }

  class ComboBox : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ComboBox").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "onDropDownClosed", OnDropDownClosed);
            Nan::SetPrototypeMethod(localRef, "onDropDownOpened", OnDropDownOpened);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxDropDownHeight").ToLocalChecked(), MaxDropDownHeightGetter, MaxDropDownHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDropDownOpen").ToLocalChecked(), IsDropDownOpenGetter, IsDropDownOpenSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEditable").ToLocalChecked(), IsEditableGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSelectionBoxHighlighted").ToLocalChecked(), IsSelectionBoxHighlightedGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectionBoxItem").ToLocalChecked(), SelectionBoxItemGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectionBoxItemTemplate").ToLocalChecked(), SelectionBoxItemTemplateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("templateSettings").ToLocalChecked(), TemplateSettingsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("placeholderText").ToLocalChecked(), PlaceholderTextGetter, PlaceholderTextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerTemplate").ToLocalChecked(), HeaderTemplateGetter, HeaderTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("header").ToLocalChecked(), HeaderGetter, HeaderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lightDismissOverlayMode").ToLocalChecked(), LightDismissOverlayModeGetter, LightDismissOverlayModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextSearchEnabled").ToLocalChecked(), IsTextSearchEnabledGetter, IsTextSearchEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectionChangedTrigger").ToLocalChecked(), SelectionChangedTriggerGetter, SelectionChangedTriggerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedValuePath").ToLocalChecked(), SelectedValuePathGetter, SelectedValuePathSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedValue").ToLocalChecked(), SelectedValueGetter, SelectedValueSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedItem").ToLocalChecked(), SelectedItemGetter, SelectedItemSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedIndex").ToLocalChecked(), SelectedIndexGetter, SelectedIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSynchronizedWithCurrentItem").ToLocalChecked(), IsSynchronizedWithCurrentItemGetter, IsSynchronizedWithCurrentItemSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsPanel").ToLocalChecked(), ItemsPanelGetter, ItemsPanelSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsSource").ToLocalChecked(), ItemsSourceGetter, ItemsSourceSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemTemplateSelector").ToLocalChecked(), ItemTemplateSelectorGetter, ItemTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemTemplate").ToLocalChecked(), ItemTemplateGetter, ItemTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerStyleSelector").ToLocalChecked(), ItemContainerStyleSelectorGetter, ItemContainerStyleSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerStyle").ToLocalChecked(), ItemContainerStyleGetter, ItemContainerStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupStyleSelector").ToLocalChecked(), GroupStyleSelectorGetter, GroupStyleSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerTransitions").ToLocalChecked(), ItemContainerTransitionsGetter, ItemContainerTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("displayMemberPath").ToLocalChecked(), DisplayMemberPathGetter, DisplayMemberPathSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerGenerator").ToLocalChecked(), ItemContainerGeneratorGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("items").ToLocalChecked(), ItemsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupStyle").ToLocalChecked(), GroupStyleGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isGrouping").ToLocalChecked(), IsGroupingGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsPanelRoot").ToLocalChecked(), ItemsPanelRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isDropDownOpenProperty").ToLocalChecked(), IsDropDownOpenPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxDropDownHeightProperty").ToLocalChecked(), MaxDropDownHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerProperty").ToLocalChecked(), HeaderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerTemplateProperty").ToLocalChecked(), HeaderTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("placeholderTextProperty").ToLocalChecked(), PlaceholderTextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextSearchEnabledProperty").ToLocalChecked(), IsTextSearchEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightDismissOverlayModeProperty").ToLocalChecked(), LightDismissOverlayModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectionChangedTriggerProperty").ToLocalChecked(), SelectionChangedTriggerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isSynchronizedWithCurrentItemProperty").ToLocalChecked(), IsSynchronizedWithCurrentItemPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedIndexProperty").ToLocalChecked(), SelectedIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedItemProperty").ToLocalChecked(), SelectedItemPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedValuePathProperty").ToLocalChecked(), SelectedValuePathPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedValueProperty").ToLocalChecked(), SelectedValuePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("displayMemberPathProperty").ToLocalChecked(), DisplayMemberPathPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("groupStyleSelectorProperty").ToLocalChecked(), GroupStyleSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isGroupingProperty").ToLocalChecked(), IsGroupingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerStyleProperty").ToLocalChecked(), ItemContainerStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerStyleSelectorProperty").ToLocalChecked(), ItemContainerStyleSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerTransitionsProperty").ToLocalChecked(), ItemContainerTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemTemplateProperty").ToLocalChecked(), ItemTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemTemplateSelectorProperty").ToLocalChecked(), ItemTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemsPanelProperty").ToLocalChecked(), ItemsPanelPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemsSourceProperty").ToLocalChecked(), ItemsSourcePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ComboBox").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ComboBox(::Windows::UI::Xaml::Controls::ComboBox^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ComboBox^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ComboBox^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ComboBox();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ComboBox *wrapperInstance = new ComboBox(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ComboBox^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ComboBox^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapComboBox(winRtInstance));
    }


    static void OnDropDownClosed(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This())) {
        return;
      }

      ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnDropDownClosed(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnDropDownOpened(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This())) {
        return;
      }

      ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnDropDownOpened(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void MaxDropDownHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This())) {
        return;
      }

      ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());

      try  {
        double result = wrapper->_instance->MaxDropDownHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxDropDownHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This())) {
        return;
      }

      ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxDropDownHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDropDownOpenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This())) {
        return;
      }

      ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());

      try  {
        bool result = wrapper->_instance->IsDropDownOpen;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDropDownOpenSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This())) {
        return;
      }

      ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDropDownOpen = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEditableGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This())) {
        return;
      }

      ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());

      try  {
        bool result = wrapper->_instance->IsEditable;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSelectionBoxHighlightedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This())) {
        return;
      }

      ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());

      try  {
        bool result = wrapper->_instance->IsSelectionBoxHighlighted;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectionBoxItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This())) {
        return;
      }

      ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->SelectionBoxItem;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectionBoxItemTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This())) {
        return;
      }

      ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->SelectionBoxItemTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSettingsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This())) {
        return;
      }

      ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::ComboBoxTemplateSettings^ result = wrapper->_instance->TemplateSettings;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "ComboBoxTemplateSettings", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PlaceholderTextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This())) {
        return;
      }

      ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->PlaceholderText;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PlaceholderTextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This())) {
        return;
      }

      ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->PlaceholderText = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This())) {
        return;
      }

      ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->HeaderTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This())) {
        return;
      }

      ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This())) {
        return;
      }

      ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Header;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This())) {
        return;
      }

      ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Header = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightDismissOverlayModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This())) {
        return;
      }

      ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode result = wrapper->_instance->LightDismissOverlayMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LightDismissOverlayModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This())) {
        return;
      }

      ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::LightDismissOverlayMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->LightDismissOverlayMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTextSearchEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This())) {
        return;
      }

      ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextSearchEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextSearchEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This())) {
        return;
      }

      ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextSearchEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectionChangedTriggerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This())) {
        return;
      }

      ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ComboBoxSelectionChangedTrigger result = wrapper->_instance->SelectionChangedTrigger;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectionChangedTriggerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This())) {
        return;
      }

      ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ComboBoxSelectionChangedTrigger winRtValue = static_cast<::Windows::UI::Xaml::Controls::ComboBoxSelectionChangedTrigger>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SelectionChangedTrigger = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedValuePathGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->SelectedValuePath;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedValuePathSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->SelectedValuePath = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedValueGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->SelectedValue;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedValueSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectedValue = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->SelectedItem;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedItemSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectedItem = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        int result = wrapper->_instance->SelectedIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SelectedIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsSynchronizedWithCurrentItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        ::Platform::IBox<bool>^ result = wrapper->_instance->IsSynchronizedWithCurrentItem;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Boolean>(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSynchronizedWithCurrentItemSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        ::Platform::IBox<bool>^ winRtValue = ref new ::Platform::Box<bool>(Nan::To<bool>(value).FromMaybe(false));

        wrapper->_instance->IsSynchronizedWithCurrentItem = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemsPanelGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ result = wrapper->_instance->ItemsPanel;
        info.GetReturnValue().Set(WrapItemsPanelTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsPanelSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemsPanel = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemsSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->ItemsSource;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsSourceSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemsSource = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ItemTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ItemTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerStyleSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::StyleSelector^ result = wrapper->_instance->ItemContainerStyleSelector;
        info.GetReturnValue().Set(WrapStyleSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerStyleSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StyleSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::StyleSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::StyleSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerStyleSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->ItemContainerStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void GroupStyleSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::GroupStyleSelector^ result = wrapper->_instance->GroupStyleSelector;
        info.GetReturnValue().Set(WrapGroupStyleSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupStyleSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::GroupStyleSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->GroupStyleSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ItemContainerTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DisplayMemberPathGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->DisplayMemberPath;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DisplayMemberPathSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->DisplayMemberPath = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerGeneratorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemContainerGenerator^ result = wrapper->_instance->ItemContainerGenerator;
        info.GetReturnValue().Set(WrapItemContainerGenerator(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemCollection^ result = wrapper->_instance->Items;
        info.GetReturnValue().Set(WrapItemCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::Foundation::Collections::IObservableVector<::Windows::UI::Xaml::Controls::GroupStyle^>^ result = wrapper->_instance->GroupStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "IObservableVector`1", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsGroupingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        bool result = wrapper->_instance->IsGrouping;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsPanelRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Panel^ result = wrapper->_instance->ItemsPanelRoot;
        info.GetReturnValue().Set(WrapPanel(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsDropDownOpenPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ComboBox::IsDropDownOpenProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxDropDownHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ComboBox::MaxDropDownHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ComboBox::HeaderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ComboBox::HeaderTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PlaceholderTextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ComboBox::PlaceholderTextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextSearchEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ComboBox::IsTextSearchEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightDismissOverlayModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ComboBox::LightDismissOverlayModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectionChangedTriggerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ComboBox::SelectionChangedTriggerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsSynchronizedWithCurrentItemPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::IsSynchronizedWithCurrentItemProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedItemPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedItemProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedValuePathPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedValuePathProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedValuePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedValueProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DisplayMemberPathPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::DisplayMemberPathProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GroupStyleSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::GroupStyleSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsGroupingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::IsGroupingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerStyleSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerStyleSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemsPanelPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemsPanelProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemsSourcePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemsSourceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"dropDownClosed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropDownClosed::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropDownOpened", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropDownOpened::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SelectionChanged::add(
            ref new ::Windows::UI::Xaml::Controls::SelectionChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapSelectionChangedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"dropDownClosed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropDownOpened", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"dropDownClosed", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->DropDownClosed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropDownOpened", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->DropDownOpened::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->SelectionChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ComboBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ComboBox *wrapper = ComboBox::Unwrap<ComboBox>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ComboBox^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapComboBox(::Windows::UI::Xaml::Controls::ComboBox^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ComboBox^ UnwrapComboBox(Local<Value> value);
  };

  Persistent<FunctionTemplate> ComboBox::s_constructorTemplate;

  v8::Local<v8::Value> WrapComboBox(::Windows::UI::Xaml::Controls::ComboBox^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ComboBox::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ComboBox^ UnwrapComboBox(Local<Value> value) {
     return ComboBox::Unwrap<ComboBox>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitComboBox(Local<Object> exports) {
    ComboBox::Init(exports);
  }

  class FlipView : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("FlipView").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useTouchAnimationsForAllNavigation").ToLocalChecked(), UseTouchAnimationsForAllNavigationGetter, UseTouchAnimationsForAllNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedValuePath").ToLocalChecked(), SelectedValuePathGetter, SelectedValuePathSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedValue").ToLocalChecked(), SelectedValueGetter, SelectedValueSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedItem").ToLocalChecked(), SelectedItemGetter, SelectedItemSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedIndex").ToLocalChecked(), SelectedIndexGetter, SelectedIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSynchronizedWithCurrentItem").ToLocalChecked(), IsSynchronizedWithCurrentItemGetter, IsSynchronizedWithCurrentItemSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsPanel").ToLocalChecked(), ItemsPanelGetter, ItemsPanelSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsSource").ToLocalChecked(), ItemsSourceGetter, ItemsSourceSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemTemplateSelector").ToLocalChecked(), ItemTemplateSelectorGetter, ItemTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemTemplate").ToLocalChecked(), ItemTemplateGetter, ItemTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerStyleSelector").ToLocalChecked(), ItemContainerStyleSelectorGetter, ItemContainerStyleSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerStyle").ToLocalChecked(), ItemContainerStyleGetter, ItemContainerStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupStyleSelector").ToLocalChecked(), GroupStyleSelectorGetter, GroupStyleSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerTransitions").ToLocalChecked(), ItemContainerTransitionsGetter, ItemContainerTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("displayMemberPath").ToLocalChecked(), DisplayMemberPathGetter, DisplayMemberPathSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerGenerator").ToLocalChecked(), ItemContainerGeneratorGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("items").ToLocalChecked(), ItemsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupStyle").ToLocalChecked(), GroupStyleGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isGrouping").ToLocalChecked(), IsGroupingGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsPanelRoot").ToLocalChecked(), ItemsPanelRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("useTouchAnimationsForAllNavigationProperty").ToLocalChecked(), UseTouchAnimationsForAllNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isSynchronizedWithCurrentItemProperty").ToLocalChecked(), IsSynchronizedWithCurrentItemPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedIndexProperty").ToLocalChecked(), SelectedIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedItemProperty").ToLocalChecked(), SelectedItemPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedValuePathProperty").ToLocalChecked(), SelectedValuePathPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedValueProperty").ToLocalChecked(), SelectedValuePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("displayMemberPathProperty").ToLocalChecked(), DisplayMemberPathPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("groupStyleSelectorProperty").ToLocalChecked(), GroupStyleSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isGroupingProperty").ToLocalChecked(), IsGroupingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerStyleProperty").ToLocalChecked(), ItemContainerStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerStyleSelectorProperty").ToLocalChecked(), ItemContainerStyleSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerTransitionsProperty").ToLocalChecked(), ItemContainerTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemTemplateProperty").ToLocalChecked(), ItemTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemTemplateSelectorProperty").ToLocalChecked(), ItemTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemsPanelProperty").ToLocalChecked(), ItemsPanelPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemsSourceProperty").ToLocalChecked(), ItemsSourcePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("FlipView").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      FlipView(::Windows::UI::Xaml::Controls::FlipView^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::FlipView^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::FlipView^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::FlipView();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      FlipView *wrapperInstance = new FlipView(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::FlipView^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::FlipView^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapFlipView(winRtInstance));
    }





    static void UseTouchAnimationsForAllNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This())) {
        return;
      }

      FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());

      try  {
        bool result = wrapper->_instance->UseTouchAnimationsForAllNavigation;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseTouchAnimationsForAllNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This())) {
        return;
      }

      FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseTouchAnimationsForAllNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedValuePathGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->SelectedValuePath;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedValuePathSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->SelectedValuePath = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedValueGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->SelectedValue;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedValueSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectedValue = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->SelectedItem;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedItemSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectedItem = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        int result = wrapper->_instance->SelectedIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SelectedIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsSynchronizedWithCurrentItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        ::Platform::IBox<bool>^ result = wrapper->_instance->IsSynchronizedWithCurrentItem;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Boolean>(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSynchronizedWithCurrentItemSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        ::Platform::IBox<bool>^ winRtValue = ref new ::Platform::Box<bool>(Nan::To<bool>(value).FromMaybe(false));

        wrapper->_instance->IsSynchronizedWithCurrentItem = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemsPanelGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ result = wrapper->_instance->ItemsPanel;
        info.GetReturnValue().Set(WrapItemsPanelTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsPanelSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemsPanel = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemsSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->ItemsSource;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsSourceSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemsSource = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ItemTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ItemTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerStyleSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::StyleSelector^ result = wrapper->_instance->ItemContainerStyleSelector;
        info.GetReturnValue().Set(WrapStyleSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerStyleSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StyleSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::StyleSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::StyleSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerStyleSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->ItemContainerStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void GroupStyleSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::GroupStyleSelector^ result = wrapper->_instance->GroupStyleSelector;
        info.GetReturnValue().Set(WrapGroupStyleSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupStyleSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::GroupStyleSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->GroupStyleSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ItemContainerTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DisplayMemberPathGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->DisplayMemberPath;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DisplayMemberPathSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->DisplayMemberPath = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerGeneratorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemContainerGenerator^ result = wrapper->_instance->ItemContainerGenerator;
        info.GetReturnValue().Set(WrapItemContainerGenerator(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemCollection^ result = wrapper->_instance->Items;
        info.GetReturnValue().Set(WrapItemCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::Foundation::Collections::IObservableVector<::Windows::UI::Xaml::Controls::GroupStyle^>^ result = wrapper->_instance->GroupStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "IObservableVector`1", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsGroupingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        bool result = wrapper->_instance->IsGrouping;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsPanelRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Panel^ result = wrapper->_instance->ItemsPanelRoot;
        info.GetReturnValue().Set(WrapPanel(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void UseTouchAnimationsForAllNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::FlipView::UseTouchAnimationsForAllNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsSynchronizedWithCurrentItemPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::IsSynchronizedWithCurrentItemProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedItemPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedItemProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedValuePathPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedValuePathProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedValuePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedValueProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DisplayMemberPathPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::DisplayMemberPathProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GroupStyleSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::GroupStyleSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsGroupingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::IsGroupingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerStyleSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerStyleSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemsPanelPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemsPanelProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemsSourcePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemsSourceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SelectionChanged::add(
            ref new ::Windows::UI::Xaml::Controls::SelectionChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapSelectionChangedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->SelectionChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlipView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlipView *wrapper = FlipView::Unwrap<FlipView>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::FlipView^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapFlipView(::Windows::UI::Xaml::Controls::FlipView^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::FlipView^ UnwrapFlipView(Local<Value> value);
  };

  Persistent<FunctionTemplate> FlipView::s_constructorTemplate;

  v8::Local<v8::Value> WrapFlipView(::Windows::UI::Xaml::Controls::FlipView^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(FlipView::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::FlipView^ UnwrapFlipView(Local<Value> value) {
     return FlipView::Unwrap<FlipView>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitFlipView(Local<Object> exports) {
    FlipView::Init(exports);
  }

  class ListBox : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ListBox").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "scrollIntoView", ScrollIntoView);
            Nan::SetPrototypeMethod(localRef, "selectAll", SelectAll);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectionMode").ToLocalChecked(), SelectionModeGetter, SelectionModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedItems").ToLocalChecked(), SelectedItemsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("singleSelectionFollowsFocus").ToLocalChecked(), SingleSelectionFollowsFocusGetter, SingleSelectionFollowsFocusSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedValuePath").ToLocalChecked(), SelectedValuePathGetter, SelectedValuePathSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedValue").ToLocalChecked(), SelectedValueGetter, SelectedValueSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedItem").ToLocalChecked(), SelectedItemGetter, SelectedItemSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedIndex").ToLocalChecked(), SelectedIndexGetter, SelectedIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSynchronizedWithCurrentItem").ToLocalChecked(), IsSynchronizedWithCurrentItemGetter, IsSynchronizedWithCurrentItemSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsPanel").ToLocalChecked(), ItemsPanelGetter, ItemsPanelSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsSource").ToLocalChecked(), ItemsSourceGetter, ItemsSourceSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemTemplateSelector").ToLocalChecked(), ItemTemplateSelectorGetter, ItemTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemTemplate").ToLocalChecked(), ItemTemplateGetter, ItemTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerStyleSelector").ToLocalChecked(), ItemContainerStyleSelectorGetter, ItemContainerStyleSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerStyle").ToLocalChecked(), ItemContainerStyleGetter, ItemContainerStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupStyleSelector").ToLocalChecked(), GroupStyleSelectorGetter, GroupStyleSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerTransitions").ToLocalChecked(), ItemContainerTransitionsGetter, ItemContainerTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("displayMemberPath").ToLocalChecked(), DisplayMemberPathGetter, DisplayMemberPathSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerGenerator").ToLocalChecked(), ItemContainerGeneratorGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("items").ToLocalChecked(), ItemsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupStyle").ToLocalChecked(), GroupStyleGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isGrouping").ToLocalChecked(), IsGroupingGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsPanelRoot").ToLocalChecked(), ItemsPanelRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("selectionModeProperty").ToLocalChecked(), SelectionModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("singleSelectionFollowsFocusProperty").ToLocalChecked(), SingleSelectionFollowsFocusPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isSynchronizedWithCurrentItemProperty").ToLocalChecked(), IsSynchronizedWithCurrentItemPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedIndexProperty").ToLocalChecked(), SelectedIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedItemProperty").ToLocalChecked(), SelectedItemPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedValuePathProperty").ToLocalChecked(), SelectedValuePathPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedValueProperty").ToLocalChecked(), SelectedValuePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("displayMemberPathProperty").ToLocalChecked(), DisplayMemberPathPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("groupStyleSelectorProperty").ToLocalChecked(), GroupStyleSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isGroupingProperty").ToLocalChecked(), IsGroupingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerStyleProperty").ToLocalChecked(), ItemContainerStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerStyleSelectorProperty").ToLocalChecked(), ItemContainerStyleSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerTransitionsProperty").ToLocalChecked(), ItemContainerTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemTemplateProperty").ToLocalChecked(), ItemTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemTemplateSelectorProperty").ToLocalChecked(), ItemTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemsPanelProperty").ToLocalChecked(), ItemsPanelPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemsSourceProperty").ToLocalChecked(), ItemsSourcePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ListBox").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ListBox(::Windows::UI::Xaml::Controls::ListBox^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ListBox^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ListBox^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ListBox();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ListBox *wrapperInstance = new ListBox(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ListBox^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ListBox^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapListBox(winRtInstance));
    }


    static void ScrollIntoView(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This())) {
        return;
      }

      ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->ScrollIntoView(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void SelectAll(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This())) {
        return;
      }

      ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->SelectAll();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void SelectionModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This())) {
        return;
      }

      ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::SelectionMode result = wrapper->_instance->SelectionMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectionModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This())) {
        return;
      }

      ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::SelectionMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::SelectionMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SelectionMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This())) {
        return;
      }

      ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Platform::Object^>^ result = wrapper->_instance->SelectedItems;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Platform::Object^>::CreateVectorWrapper(result, 
            [](::Platform::Object^ val) -> Local<Value> {
              return CreateOpaqueWrapper(val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value);
            },
            [](Local<Value> value) -> ::Platform::Object^ {
              return dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SingleSelectionFollowsFocusGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This())) {
        return;
      }

      ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());

      try  {
        bool result = wrapper->_instance->SingleSelectionFollowsFocus;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SingleSelectionFollowsFocusSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This())) {
        return;
      }

      ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->SingleSelectionFollowsFocus = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedValuePathGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->SelectedValuePath;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedValuePathSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->SelectedValuePath = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedValueGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->SelectedValue;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedValueSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectedValue = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->SelectedItem;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedItemSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectedItem = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        int result = wrapper->_instance->SelectedIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SelectedIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsSynchronizedWithCurrentItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        ::Platform::IBox<bool>^ result = wrapper->_instance->IsSynchronizedWithCurrentItem;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Boolean>(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSynchronizedWithCurrentItemSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        ::Platform::IBox<bool>^ winRtValue = ref new ::Platform::Box<bool>(Nan::To<bool>(value).FromMaybe(false));

        wrapper->_instance->IsSynchronizedWithCurrentItem = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemsPanelGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ result = wrapper->_instance->ItemsPanel;
        info.GetReturnValue().Set(WrapItemsPanelTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsPanelSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemsPanel = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemsSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->ItemsSource;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsSourceSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemsSource = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ItemTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ItemTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerStyleSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::StyleSelector^ result = wrapper->_instance->ItemContainerStyleSelector;
        info.GetReturnValue().Set(WrapStyleSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerStyleSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StyleSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::StyleSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::StyleSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerStyleSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->ItemContainerStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void GroupStyleSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::GroupStyleSelector^ result = wrapper->_instance->GroupStyleSelector;
        info.GetReturnValue().Set(WrapGroupStyleSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupStyleSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::GroupStyleSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->GroupStyleSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ItemContainerTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DisplayMemberPathGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->DisplayMemberPath;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DisplayMemberPathSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->DisplayMemberPath = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerGeneratorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemContainerGenerator^ result = wrapper->_instance->ItemContainerGenerator;
        info.GetReturnValue().Set(WrapItemContainerGenerator(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemCollection^ result = wrapper->_instance->Items;
        info.GetReturnValue().Set(WrapItemCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::Foundation::Collections::IObservableVector<::Windows::UI::Xaml::Controls::GroupStyle^>^ result = wrapper->_instance->GroupStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "IObservableVector`1", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsGroupingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        bool result = wrapper->_instance->IsGrouping;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsPanelRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Panel^ result = wrapper->_instance->ItemsPanelRoot;
        info.GetReturnValue().Set(WrapPanel(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void SelectionModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListBox::SelectionModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SingleSelectionFollowsFocusPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListBox::SingleSelectionFollowsFocusProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsSynchronizedWithCurrentItemPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::IsSynchronizedWithCurrentItemProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedItemPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedItemProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedValuePathPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedValuePathProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedValuePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedValueProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DisplayMemberPathPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::DisplayMemberPathProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GroupStyleSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::GroupStyleSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsGroupingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::IsGroupingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerStyleSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerStyleSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemsPanelPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemsPanelProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemsSourcePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemsSourceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SelectionChanged::add(
            ref new ::Windows::UI::Xaml::Controls::SelectionChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapSelectionChangedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->SelectionChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListBox *wrapper = ListBox::Unwrap<ListBox>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ListBox^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapListBox(::Windows::UI::Xaml::Controls::ListBox^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ListBox^ UnwrapListBox(Local<Value> value);
  };

  Persistent<FunctionTemplate> ListBox::s_constructorTemplate;

  v8::Local<v8::Value> WrapListBox(::Windows::UI::Xaml::Controls::ListBox^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ListBox::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ListBox^ UnwrapListBox(Local<Value> value) {
     return ListBox::Unwrap<ListBox>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitListBox(Local<Object> exports) {
    ListBox::Init(exports);
  }

  class CheckBox : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("CheckBox").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isThreeState").ToLocalChecked(), IsThreeStateGetter, IsThreeStateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isChecked").ToLocalChecked(), IsCheckedGetter, IsCheckedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandParameter").ToLocalChecked(), CommandParameterGetter, CommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("command").ToLocalChecked(), CommandGetter, CommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clickMode").ToLocalChecked(), ClickModeGetter, ClickModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPointerOver").ToLocalChecked(), IsPointerOverGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPressed").ToLocalChecked(), IsPressedGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isCheckedProperty").ToLocalChecked(), IsCheckedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isThreeStateProperty").ToLocalChecked(), IsThreeStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clickModeProperty").ToLocalChecked(), ClickModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandParameterProperty").ToLocalChecked(), CommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandProperty").ToLocalChecked(), CommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPointerOverProperty").ToLocalChecked(), IsPointerOverPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPressedProperty").ToLocalChecked(), IsPressedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("CheckBox").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      CheckBox(::Windows::UI::Xaml::Controls::CheckBox^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::CheckBox^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::CheckBox^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::CheckBox();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      CheckBox *wrapperInstance = new CheckBox(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::CheckBox^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::CheckBox^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapCheckBox(winRtInstance));
    }





    static void IsThreeStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsThreeState;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsThreeStateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsThreeState = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsCheckedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        ::Platform::IBox<bool>^ result = wrapper->_instance->IsChecked;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Boolean>(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCheckedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        ::Platform::IBox<bool>^ winRtValue = ref new ::Platform::Box<bool>(Nan::To<bool>(value).FromMaybe(false));

        wrapper->_instance->IsChecked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->CommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->Command;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Command = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClickModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ClickMode result = wrapper->_instance->ClickMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClickModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ClickMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ClickMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ClickMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPointerOverGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPointerOver;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPressedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPressed;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsCheckedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsCheckedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsThreeStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsThreeStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClickModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::ClickModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPointerOverPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPointerOverProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPressedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPressedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Checked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Indeterminate::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unchecked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Click::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->Checked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->Indeterminate::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->Unchecked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->Click::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CheckBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CheckBox *wrapper = CheckBox::Unwrap<CheckBox>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::CheckBox^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapCheckBox(::Windows::UI::Xaml::Controls::CheckBox^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::CheckBox^ UnwrapCheckBox(Local<Value> value);
  };

  Persistent<FunctionTemplate> CheckBox::s_constructorTemplate;

  v8::Local<v8::Value> WrapCheckBox(::Windows::UI::Xaml::Controls::CheckBox^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(CheckBox::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::CheckBox^ UnwrapCheckBox(Local<Value> value) {
     return CheckBox::Unwrap<CheckBox>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitCheckBox(Local<Object> exports) {
    CheckBox::Init(exports);
  }

  class RadioButton : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("RadioButton").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupName").ToLocalChecked(), GroupNameGetter, GroupNameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isThreeState").ToLocalChecked(), IsThreeStateGetter, IsThreeStateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isChecked").ToLocalChecked(), IsCheckedGetter, IsCheckedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandParameter").ToLocalChecked(), CommandParameterGetter, CommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("command").ToLocalChecked(), CommandGetter, CommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clickMode").ToLocalChecked(), ClickModeGetter, ClickModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPointerOver").ToLocalChecked(), IsPointerOverGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPressed").ToLocalChecked(), IsPressedGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("groupNameProperty").ToLocalChecked(), GroupNamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isCheckedProperty").ToLocalChecked(), IsCheckedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isThreeStateProperty").ToLocalChecked(), IsThreeStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clickModeProperty").ToLocalChecked(), ClickModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandParameterProperty").ToLocalChecked(), CommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandProperty").ToLocalChecked(), CommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPointerOverProperty").ToLocalChecked(), IsPointerOverPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPressedProperty").ToLocalChecked(), IsPressedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("RadioButton").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      RadioButton(::Windows::UI::Xaml::Controls::RadioButton^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::RadioButton^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::RadioButton^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::RadioButton();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      RadioButton *wrapperInstance = new RadioButton(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::RadioButton^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::RadioButton^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapRadioButton(winRtInstance));
    }





    static void GroupNameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This())) {
        return;
      }

      RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->GroupName;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupNameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This())) {
        return;
      }

      RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->GroupName = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsThreeStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsThreeState;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsThreeStateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsThreeState = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsCheckedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        ::Platform::IBox<bool>^ result = wrapper->_instance->IsChecked;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Boolean>(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCheckedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        ::Platform::IBox<bool>^ winRtValue = ref new ::Platform::Box<bool>(Nan::To<bool>(value).FromMaybe(false));

        wrapper->_instance->IsChecked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->CommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->Command;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Command = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClickModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ClickMode result = wrapper->_instance->ClickMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClickModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ClickMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ClickMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ClickMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPointerOverGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPointerOver;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPressedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPressed;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void GroupNamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RadioButton::GroupNameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsCheckedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsCheckedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsThreeStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsThreeStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClickModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::ClickModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPointerOverPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPointerOverProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPressedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPressedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Checked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Indeterminate::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unchecked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Click::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->Checked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->Indeterminate::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->Unchecked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->Click::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::RadioButton^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapRadioButton(::Windows::UI::Xaml::Controls::RadioButton^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::RadioButton^ UnwrapRadioButton(Local<Value> value);
  };

  Persistent<FunctionTemplate> RadioButton::s_constructorTemplate;

  v8::Local<v8::Value> WrapRadioButton(::Windows::UI::Xaml::Controls::RadioButton^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(RadioButton::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::RadioButton^ UnwrapRadioButton(Local<Value> value) {
     return RadioButton::Unwrap<RadioButton>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitRadioButton(Local<Object> exports) {
    RadioButton::Init(exports);
  }

  class CalendarView : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("CalendarView").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "setDisplayDate", SetDisplayDate);
            Nan::SetPrototypeMethod(localRef, "setYearDecadeDisplayDimensions", SetYearDecadeDisplayDimensions);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("calendarItemForeground").ToLocalChecked(), CalendarItemForegroundGetter, CalendarItemForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("calendarItemBorderThickness").ToLocalChecked(), CalendarItemBorderThicknessGetter, CalendarItemBorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusBorderBrush").ToLocalChecked(), FocusBorderBrushGetter, FocusBorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("calendarItemBackground").ToLocalChecked(), CalendarItemBackgroundGetter, CalendarItemBackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("calendarIdentifier").ToLocalChecked(), CalendarIdentifierGetter, CalendarIdentifierSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("calendarViewDayItemStyle").ToLocalChecked(), CalendarViewDayItemStyleGetter, CalendarViewDayItemStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("displayMode").ToLocalChecked(), DisplayModeGetter, DisplayModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dayOfWeekFormat").ToLocalChecked(), DayOfWeekFormatGetter, DayOfWeekFormatSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dayItemFontWeight").ToLocalChecked(), DayItemFontWeightGetter, DayItemFontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dayItemFontStyle").ToLocalChecked(), DayItemFontStyleGetter, DayItemFontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dayItemFontSize").ToLocalChecked(), DayItemFontSizeGetter, DayItemFontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dayItemFontFamily").ToLocalChecked(), DayItemFontFamilyGetter, DayItemFontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("blackoutForeground").ToLocalChecked(), BlackoutForegroundGetter, BlackoutForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("firstOfYearDecadeLabelFontFamily").ToLocalChecked(), FirstOfYearDecadeLabelFontFamilyGetter, FirstOfYearDecadeLabelFontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("firstOfMonthLabelFontWeight").ToLocalChecked(), FirstOfMonthLabelFontWeightGetter, FirstOfMonthLabelFontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("firstOfMonthLabelFontStyle").ToLocalChecked(), FirstOfMonthLabelFontStyleGetter, FirstOfMonthLabelFontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("firstOfMonthLabelFontSize").ToLocalChecked(), FirstOfMonthLabelFontSizeGetter, FirstOfMonthLabelFontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("firstOfMonthLabelFontFamily").ToLocalChecked(), FirstOfMonthLabelFontFamilyGetter, FirstOfMonthLabelFontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("hoverBorderBrush").ToLocalChecked(), HoverBorderBrushGetter, HoverBorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("firstDayOfWeek").ToLocalChecked(), FirstDayOfWeekGetter, FirstDayOfWeekSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalFirstOfMonthLabelAlignment").ToLocalChecked(), HorizontalFirstOfMonthLabelAlignmentGetter, HorizontalFirstOfMonthLabelAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalDayItemAlignment").ToLocalChecked(), HorizontalDayItemAlignmentGetter, HorizontalDayItemAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("calendarItemBorderBrush").ToLocalChecked(), CalendarItemBorderBrushGetter, CalendarItemBorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("firstOfYearDecadeLabelFontWeight").ToLocalChecked(), FirstOfYearDecadeLabelFontWeightGetter, FirstOfYearDecadeLabelFontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("firstOfYearDecadeLabelFontStyle").ToLocalChecked(), FirstOfYearDecadeLabelFontStyleGetter, FirstOfYearDecadeLabelFontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("monthYearItemFontFamily").ToLocalChecked(), MonthYearItemFontFamilyGetter, MonthYearItemFontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minDate").ToLocalChecked(), MinDateGetter, MinDateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxDate").ToLocalChecked(), MaxDateGetter, MaxDateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTodayHighlighted").ToLocalChecked(), IsTodayHighlightedGetter, IsTodayHighlightedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isOutOfScopeEnabled").ToLocalChecked(), IsOutOfScopeEnabledGetter, IsOutOfScopeEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isGroupLabelVisible").ToLocalChecked(), IsGroupLabelVisibleGetter, IsGroupLabelVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("monthYearItemFontSize").ToLocalChecked(), MonthYearItemFontSizeGetter, MonthYearItemFontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("firstOfYearDecadeLabelFontSize").ToLocalChecked(), FirstOfYearDecadeLabelFontSizeGetter, FirstOfYearDecadeLabelFontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("outOfScopeForeground").ToLocalChecked(), OutOfScopeForegroundGetter, OutOfScopeForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("outOfScopeBackground").ToLocalChecked(), OutOfScopeBackgroundGetter, OutOfScopeBackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("numberOfWeeksInView").ToLocalChecked(), NumberOfWeeksInViewGetter, NumberOfWeeksInViewSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("monthYearItemFontWeight").ToLocalChecked(), MonthYearItemFontWeightGetter, MonthYearItemFontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("monthYearItemFontStyle").ToLocalChecked(), MonthYearItemFontStyleGetter, MonthYearItemFontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedHoverBorderBrush").ToLocalChecked(), SelectedHoverBorderBrushGetter, SelectedHoverBorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedForeground").ToLocalChecked(), SelectedForegroundGetter, SelectedForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedPressedBorderBrush").ToLocalChecked(), SelectedPressedBorderBrushGetter, SelectedPressedBorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedBorderBrush").ToLocalChecked(), SelectedBorderBrushGetter, SelectedBorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pressedForeground").ToLocalChecked(), PressedForegroundGetter, PressedForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pressedBorderBrush").ToLocalChecked(), PressedBorderBrushGetter, PressedBorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalFirstOfMonthLabelAlignment").ToLocalChecked(), VerticalFirstOfMonthLabelAlignmentGetter, VerticalFirstOfMonthLabelAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalDayItemAlignment").ToLocalChecked(), VerticalDayItemAlignmentGetter, VerticalDayItemAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("todayForeground").ToLocalChecked(), TodayForegroundGetter, TodayForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("todayFontWeight").ToLocalChecked(), TodayFontWeightGetter, TodayFontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectionMode").ToLocalChecked(), SelectionModeGetter, SelectionModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedDates").ToLocalChecked(), SelectedDatesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("templateSettings").ToLocalChecked(), TemplateSettingsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("blackoutForegroundProperty").ToLocalChecked(), BlackoutForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("calendarIdentifierProperty").ToLocalChecked(), CalendarIdentifierPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("calendarItemBackgroundProperty").ToLocalChecked(), CalendarItemBackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("calendarItemBorderBrushProperty").ToLocalChecked(), CalendarItemBorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("calendarItemBorderThicknessProperty").ToLocalChecked(), CalendarItemBorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("calendarItemForegroundProperty").ToLocalChecked(), CalendarItemForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("calendarViewDayItemStyleProperty").ToLocalChecked(), CalendarViewDayItemStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dayItemFontFamilyProperty").ToLocalChecked(), DayItemFontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dayItemFontSizeProperty").ToLocalChecked(), DayItemFontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dayItemFontStyleProperty").ToLocalChecked(), DayItemFontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dayItemFontWeightProperty").ToLocalChecked(), DayItemFontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dayOfWeekFormatProperty").ToLocalChecked(), DayOfWeekFormatPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("displayModeProperty").ToLocalChecked(), DisplayModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("firstDayOfWeekProperty").ToLocalChecked(), FirstDayOfWeekPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("firstOfMonthLabelFontFamilyProperty").ToLocalChecked(), FirstOfMonthLabelFontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("firstOfMonthLabelFontSizeProperty").ToLocalChecked(), FirstOfMonthLabelFontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("firstOfMonthLabelFontStyleProperty").ToLocalChecked(), FirstOfMonthLabelFontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("firstOfMonthLabelFontWeightProperty").ToLocalChecked(), FirstOfMonthLabelFontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("firstOfYearDecadeLabelFontFamilyProperty").ToLocalChecked(), FirstOfYearDecadeLabelFontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("firstOfYearDecadeLabelFontSizeProperty").ToLocalChecked(), FirstOfYearDecadeLabelFontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("firstOfYearDecadeLabelFontStyleProperty").ToLocalChecked(), FirstOfYearDecadeLabelFontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("firstOfYearDecadeLabelFontWeightProperty").ToLocalChecked(), FirstOfYearDecadeLabelFontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusBorderBrushProperty").ToLocalChecked(), FocusBorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalDayItemAlignmentProperty").ToLocalChecked(), HorizontalDayItemAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalFirstOfMonthLabelAlignmentProperty").ToLocalChecked(), HorizontalFirstOfMonthLabelAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("hoverBorderBrushProperty").ToLocalChecked(), HoverBorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isGroupLabelVisibleProperty").ToLocalChecked(), IsGroupLabelVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isOutOfScopeEnabledProperty").ToLocalChecked(), IsOutOfScopeEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTodayHighlightedProperty").ToLocalChecked(), IsTodayHighlightedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxDateProperty").ToLocalChecked(), MaxDatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minDateProperty").ToLocalChecked(), MinDatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("monthYearItemFontFamilyProperty").ToLocalChecked(), MonthYearItemFontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("monthYearItemFontSizeProperty").ToLocalChecked(), MonthYearItemFontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("monthYearItemFontStyleProperty").ToLocalChecked(), MonthYearItemFontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("monthYearItemFontWeightProperty").ToLocalChecked(), MonthYearItemFontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("numberOfWeeksInViewProperty").ToLocalChecked(), NumberOfWeeksInViewPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("outOfScopeBackgroundProperty").ToLocalChecked(), OutOfScopeBackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("outOfScopeForegroundProperty").ToLocalChecked(), OutOfScopeForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pressedBorderBrushProperty").ToLocalChecked(), PressedBorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pressedForegroundProperty").ToLocalChecked(), PressedForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedBorderBrushProperty").ToLocalChecked(), SelectedBorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedDatesProperty").ToLocalChecked(), SelectedDatesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedForegroundProperty").ToLocalChecked(), SelectedForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedHoverBorderBrushProperty").ToLocalChecked(), SelectedHoverBorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedPressedBorderBrushProperty").ToLocalChecked(), SelectedPressedBorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectionModeProperty").ToLocalChecked(), SelectionModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateSettingsProperty").ToLocalChecked(), TemplateSettingsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("todayFontWeightProperty").ToLocalChecked(), TodayFontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("todayForegroundProperty").ToLocalChecked(), TodayForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalDayItemAlignmentProperty").ToLocalChecked(), VerticalDayItemAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalFirstOfMonthLabelAlignmentProperty").ToLocalChecked(), VerticalFirstOfMonthLabelAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("CalendarView").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      CalendarView(::Windows::UI::Xaml::Controls::CalendarView^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::CalendarView^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::CalendarView^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::CalendarView();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      CalendarView *wrapperInstance = new CalendarView(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::CalendarView^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::CalendarView^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapCalendarView(winRtInstance));
    }


    static void SetDisplayDate(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      if (info.Length() == 1
        && info[0]->IsDate())
      {
        try
        {
          ::Windows::Foundation::DateTime arg0 = NodeRT::Utils::DateTimeFromJSDate(info[0]);
          
          wrapper->_instance->SetDisplayDate(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void SetYearDecadeDisplayDimensions(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      if (info.Length() == 2
        && info[0]->IsInt32()
        && info[1]->IsInt32())
      {
        try
        {
          int arg0 = static_cast<int>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          int arg1 = static_cast<int>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          wrapper->_instance->SetYearDecadeDisplayDimensions(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void CalendarItemForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->CalendarItemForeground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CalendarItemForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CalendarItemForeground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CalendarItemBorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->CalendarItemBorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CalendarItemBorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->CalendarItemBorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusBorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusBorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusBorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusBorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CalendarItemBackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->CalendarItemBackground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CalendarItemBackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CalendarItemBackground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CalendarIdentifierGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->CalendarIdentifier;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CalendarIdentifierSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->CalendarIdentifier = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CalendarViewDayItemStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->CalendarViewDayItemStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CalendarViewDayItemStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CalendarViewDayItemStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DisplayModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::CalendarViewDisplayMode result = wrapper->_instance->DisplayMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DisplayModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::CalendarViewDisplayMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::CalendarViewDisplayMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->DisplayMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DayOfWeekFormatGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->DayOfWeekFormat;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DayOfWeekFormatSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->DayOfWeekFormat = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DayItemFontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->DayItemFontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DayItemFontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->DayItemFontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DayItemFontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->DayItemFontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DayItemFontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->DayItemFontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DayItemFontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        double result = wrapper->_instance->DayItemFontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DayItemFontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->DayItemFontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DayItemFontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->DayItemFontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DayItemFontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DayItemFontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BlackoutForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BlackoutForeground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BlackoutForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BlackoutForeground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FirstOfYearDecadeLabelFontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FirstOfYearDecadeLabelFontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FirstOfYearDecadeLabelFontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FirstOfYearDecadeLabelFontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FirstOfMonthLabelFontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FirstOfMonthLabelFontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FirstOfMonthLabelFontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FirstOfMonthLabelFontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FirstOfMonthLabelFontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FirstOfMonthLabelFontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FirstOfMonthLabelFontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FirstOfMonthLabelFontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FirstOfMonthLabelFontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        double result = wrapper->_instance->FirstOfMonthLabelFontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FirstOfMonthLabelFontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FirstOfMonthLabelFontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FirstOfMonthLabelFontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FirstOfMonthLabelFontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FirstOfMonthLabelFontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FirstOfMonthLabelFontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HoverBorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->HoverBorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HoverBorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HoverBorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FirstDayOfWeekGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::Globalization::DayOfWeek result = wrapper->_instance->FirstDayOfWeek;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FirstDayOfWeekSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::Globalization::DayOfWeek winRtValue = static_cast<::Windows::Globalization::DayOfWeek>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FirstDayOfWeek = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalFirstOfMonthLabelAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalFirstOfMonthLabelAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalFirstOfMonthLabelAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalFirstOfMonthLabelAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalDayItemAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalDayItemAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalDayItemAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalDayItemAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CalendarItemBorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->CalendarItemBorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CalendarItemBorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CalendarItemBorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FirstOfYearDecadeLabelFontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FirstOfYearDecadeLabelFontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FirstOfYearDecadeLabelFontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FirstOfYearDecadeLabelFontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FirstOfYearDecadeLabelFontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FirstOfYearDecadeLabelFontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FirstOfYearDecadeLabelFontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FirstOfYearDecadeLabelFontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MonthYearItemFontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->MonthYearItemFontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MonthYearItemFontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->MonthYearItemFontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinDateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::Foundation::DateTime result = wrapper->_instance->MinDate;
        info.GetReturnValue().Set(NodeRT::Utils::DateTimeToJS(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinDateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsDate()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::Foundation::DateTime winRtValue = NodeRT::Utils::DateTimeFromJSDate(value);

        wrapper->_instance->MinDate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxDateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::Foundation::DateTime result = wrapper->_instance->MaxDate;
        info.GetReturnValue().Set(NodeRT::Utils::DateTimeToJS(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxDateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsDate()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::Foundation::DateTime winRtValue = NodeRT::Utils::DateTimeFromJSDate(value);

        wrapper->_instance->MaxDate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTodayHighlightedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        bool result = wrapper->_instance->IsTodayHighlighted;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTodayHighlightedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTodayHighlighted = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsOutOfScopeEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        bool result = wrapper->_instance->IsOutOfScopeEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsOutOfScopeEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsOutOfScopeEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsGroupLabelVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        bool result = wrapper->_instance->IsGroupLabelVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsGroupLabelVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsGroupLabelVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MonthYearItemFontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        double result = wrapper->_instance->MonthYearItemFontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MonthYearItemFontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MonthYearItemFontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FirstOfYearDecadeLabelFontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        double result = wrapper->_instance->FirstOfYearDecadeLabelFontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FirstOfYearDecadeLabelFontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FirstOfYearDecadeLabelFontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OutOfScopeForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->OutOfScopeForeground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OutOfScopeForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->OutOfScopeForeground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OutOfScopeBackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->OutOfScopeBackground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OutOfScopeBackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->OutOfScopeBackground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NumberOfWeeksInViewGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        int result = wrapper->_instance->NumberOfWeeksInView;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NumberOfWeeksInViewSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->NumberOfWeeksInView = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MonthYearItemFontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->MonthYearItemFontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MonthYearItemFontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->MonthYearItemFontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MonthYearItemFontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->MonthYearItemFontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MonthYearItemFontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->MonthYearItemFontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedHoverBorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->SelectedHoverBorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedHoverBorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectedHoverBorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->SelectedForeground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectedForeground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedPressedBorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->SelectedPressedBorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedPressedBorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectedPressedBorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedBorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->SelectedBorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedBorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectedBorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PressedForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->PressedForeground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PressedForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->PressedForeground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PressedBorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->PressedBorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PressedBorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->PressedBorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalFirstOfMonthLabelAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalFirstOfMonthLabelAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalFirstOfMonthLabelAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalFirstOfMonthLabelAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalDayItemAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalDayItemAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalDayItemAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalDayItemAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TodayForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->TodayForeground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TodayForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->TodayForeground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TodayFontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->TodayFontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TodayFontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->TodayFontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectionModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::CalendarViewSelectionMode result = wrapper->_instance->SelectionMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectionModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::CalendarViewSelectionMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::CalendarViewSelectionMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SelectionMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedDatesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::Foundation::DateTime>^ result = wrapper->_instance->SelectedDates;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::Foundation::DateTime>::CreateVectorWrapper(result, 
            [](::Windows::Foundation::DateTime val) -> Local<Value> {
              return NodeRT::Utils::DateTimeToJS(val);
            },
            [](Local<Value> value) -> bool {
              return value->IsDate();
            },
            [](Local<Value> value) -> ::Windows::Foundation::DateTime {
              return NodeRT::Utils::DateTimeFromJSDate(value);
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSettingsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This())) {
        return;
      }

      CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::CalendarViewTemplateSettings^ result = wrapper->_instance->TemplateSettings;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "CalendarViewTemplateSettings", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void BlackoutForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::BlackoutForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CalendarIdentifierPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::CalendarIdentifierProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CalendarItemBackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::CalendarItemBackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CalendarItemBorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::CalendarItemBorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CalendarItemBorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::CalendarItemBorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CalendarItemForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::CalendarItemForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CalendarViewDayItemStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::CalendarViewDayItemStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DayItemFontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::DayItemFontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DayItemFontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::DayItemFontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DayItemFontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::DayItemFontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DayItemFontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::DayItemFontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DayOfWeekFormatPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::DayOfWeekFormatProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DisplayModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::DisplayModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FirstDayOfWeekPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::FirstDayOfWeekProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FirstOfMonthLabelFontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::FirstOfMonthLabelFontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FirstOfMonthLabelFontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::FirstOfMonthLabelFontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FirstOfMonthLabelFontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::FirstOfMonthLabelFontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FirstOfMonthLabelFontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::FirstOfMonthLabelFontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FirstOfYearDecadeLabelFontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::FirstOfYearDecadeLabelFontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FirstOfYearDecadeLabelFontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::FirstOfYearDecadeLabelFontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FirstOfYearDecadeLabelFontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::FirstOfYearDecadeLabelFontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FirstOfYearDecadeLabelFontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::FirstOfYearDecadeLabelFontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusBorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::FocusBorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalDayItemAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::HorizontalDayItemAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalFirstOfMonthLabelAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::HorizontalFirstOfMonthLabelAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoverBorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::HoverBorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsGroupLabelVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::IsGroupLabelVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsOutOfScopeEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::IsOutOfScopeEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTodayHighlightedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::IsTodayHighlightedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxDatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::MaxDateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinDatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::MinDateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MonthYearItemFontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::MonthYearItemFontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MonthYearItemFontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::MonthYearItemFontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MonthYearItemFontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::MonthYearItemFontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MonthYearItemFontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::MonthYearItemFontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NumberOfWeeksInViewPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::NumberOfWeeksInViewProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OutOfScopeBackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::OutOfScopeBackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OutOfScopeForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::OutOfScopeForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PressedBorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::PressedBorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PressedForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::PressedForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedBorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::SelectedBorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedDatesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::SelectedDatesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::SelectedForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedHoverBorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::SelectedHoverBorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedPressedBorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::SelectedPressedBorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectionModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::SelectionModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplateSettingsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::TemplateSettingsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TodayFontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::TodayFontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TodayForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::TodayForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalDayItemAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::VerticalDayItemAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalFirstOfMonthLabelAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarView::VerticalFirstOfMonthLabelAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"calendarViewDayItemChanging", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->CalendarViewDayItemChanging::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::CalendarView^, ::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::CalendarView^ arg0, ::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapCalendarView(arg0);
                  wrappedArg1 = WrapCalendarViewDayItemChangingEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"selectedDatesChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SelectedDatesChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::CalendarView^, ::Windows::UI::Xaml::Controls::CalendarViewSelectedDatesChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::CalendarView^ arg0, ::Windows::UI::Xaml::Controls::CalendarViewSelectedDatesChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapCalendarView(arg0);
                  wrappedArg1 = WrapCalendarViewSelectedDatesChangedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"calendarViewDayItemChanging", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"selectedDatesChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"calendarViewDayItemChanging", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->CalendarViewDayItemChanging::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"selectedDatesChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->SelectedDatesChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarView *wrapper = CalendarView::Unwrap<CalendarView>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::CalendarView^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapCalendarView(::Windows::UI::Xaml::Controls::CalendarView^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::CalendarView^ UnwrapCalendarView(Local<Value> value);
  };

  Persistent<FunctionTemplate> CalendarView::s_constructorTemplate;

  v8::Local<v8::Value> WrapCalendarView(::Windows::UI::Xaml::Controls::CalendarView^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(CalendarView::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::CalendarView^ UnwrapCalendarView(Local<Value> value) {
     return CalendarView::Unwrap<CalendarView>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitCalendarView(Local<Object> exports) {
    CalendarView::Init(exports);
  }

  class CalendarViewDayItem : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("CalendarViewDayItem").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "setDensityColors", SetDensityColors);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isBlackout").ToLocalChecked(), IsBlackoutGetter, IsBlackoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("date").ToLocalChecked(), DateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("dateProperty").ToLocalChecked(), DatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isBlackoutProperty").ToLocalChecked(), IsBlackoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("CalendarViewDayItem").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      CalendarViewDayItem(::Windows::UI::Xaml::Controls::CalendarViewDayItem^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::CalendarViewDayItem^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::CalendarViewDayItem^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::CalendarViewDayItem();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      CalendarViewDayItem *wrapperInstance = new CalendarViewDayItem(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::CalendarViewDayItem^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::CalendarViewDayItem^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapCalendarViewDayItem(winRtInstance));
    }


    static void SetDensityColors(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This())) {
        return;
      }

      CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());

      if (info.Length() == 1
        && (NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Collections::IIterable<::Windows::UI::Color>^>(info[0]) || info[0]->IsArray()))
      {
        try
        {
          ::Windows::Foundation::Collections::IIterable<::Windows::UI::Color>^ arg0 = 
            [] (v8::Local<v8::Value> value) -> ::Windows::Foundation::Collections::IIterable<::Windows::UI::Color>^
            {
              if (value->IsArray())
              {
                return NodeRT::Collections::JsArrayToWinrtVector<::Windows::UI::Color>(value.As<Array>(), 
                 [](Local<Value> value) -> bool {
                   return NodeRT::Utils::IsColor(value);
                 },
                 [](Local<Value> value) -> ::Windows::UI::Color {
                   return NodeRT::Utils::ColorFromJs(value);
                 }
                );
              }
              else
              {
                return dynamic_cast<::Windows::Foundation::Collections::IIterable<::Windows::UI::Color>^>(NodeRT::Utils::GetObjectInstance(value));
              }
            } (info[0]);
          
          wrapper->_instance->SetDensityColors(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void IsBlackoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This())) {
        return;
      }

      CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());

      try  {
        bool result = wrapper->_instance->IsBlackout;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsBlackoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This())) {
        return;
      }

      CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsBlackout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This())) {
        return;
      }

      CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());

      try  {
        ::Windows::Foundation::DateTime result = wrapper->_instance->Date;
        info.GetReturnValue().Set(NodeRT::Utils::DateTimeToJS(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void DatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarViewDayItem::DateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsBlackoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarViewDayItem::IsBlackoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarViewDayItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarViewDayItem *wrapper = CalendarViewDayItem::Unwrap<CalendarViewDayItem>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::CalendarViewDayItem^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapCalendarViewDayItem(::Windows::UI::Xaml::Controls::CalendarViewDayItem^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::CalendarViewDayItem^ UnwrapCalendarViewDayItem(Local<Value> value);
  };

  Persistent<FunctionTemplate> CalendarViewDayItem::s_constructorTemplate;

  v8::Local<v8::Value> WrapCalendarViewDayItem(::Windows::UI::Xaml::Controls::CalendarViewDayItem^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(CalendarViewDayItem::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::CalendarViewDayItem^ UnwrapCalendarViewDayItem(Local<Value> value) {
     return CalendarViewDayItem::Unwrap<CalendarViewDayItem>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitCalendarViewDayItem(Local<Object> exports) {
    CalendarViewDayItem::Init(exports);
  }

  class HubSection : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("HubSection").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHeaderInteractive").ToLocalChecked(), IsHeaderInteractiveGetter, IsHeaderInteractiveSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerTemplate").ToLocalChecked(), HeaderTemplateGetter, HeaderTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("header").ToLocalChecked(), HeaderGetter, HeaderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerProperty").ToLocalChecked(), HeaderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerTemplateProperty").ToLocalChecked(), HeaderTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHeaderInteractiveProperty").ToLocalChecked(), IsHeaderInteractivePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("HubSection").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      HubSection(::Windows::UI::Xaml::Controls::HubSection^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::HubSection^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::HubSection^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::HubSection();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      HubSection *wrapperInstance = new HubSection(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::HubSection^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::HubSection^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapHubSection(winRtInstance));
    }





    static void IsHeaderInteractiveGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This())) {
        return;
      }

      HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());

      try  {
        bool result = wrapper->_instance->IsHeaderInteractive;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHeaderInteractiveSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This())) {
        return;
      }

      HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHeaderInteractive = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This())) {
        return;
      }

      HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->HeaderTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This())) {
        return;
      }

      HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This())) {
        return;
      }

      HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Header;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This())) {
        return;
      }

      HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Header = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This())) {
        return;
      }

      HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This())) {
        return;
      }

      HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::HubSection::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::HubSection::HeaderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::HubSection::HeaderTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHeaderInteractivePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::HubSection::IsHeaderInteractiveProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          HubSection *wrapper = HubSection::Unwrap<HubSection>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::HubSection^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapHubSection(::Windows::UI::Xaml::Controls::HubSection^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::HubSection^ UnwrapHubSection(Local<Value> value);
  };

  Persistent<FunctionTemplate> HubSection::s_constructorTemplate;

  v8::Local<v8::Value> WrapHubSection(::Windows::UI::Xaml::Controls::HubSection^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(HubSection::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::HubSection^ UnwrapHubSection(Local<Value> value) {
     return HubSection::Unwrap<HubSection>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitHubSection(Local<Object> exports) {
    HubSection::Init(exports);
  }

  class MenuFlyoutItemBase : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("MenuFlyoutItemBase").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("MenuFlyoutItemBase").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      MenuFlyoutItemBase(::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      MenuFlyoutItemBase *wrapperInstance = new MenuFlyoutItemBase(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapMenuFlyoutItemBase(winRtInstance));
    }





    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItemBase *wrapper = MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapMenuFlyoutItemBase(::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^ UnwrapMenuFlyoutItemBase(Local<Value> value);
  };

  Persistent<FunctionTemplate> MenuFlyoutItemBase::s_constructorTemplate;

  v8::Local<v8::Value> WrapMenuFlyoutItemBase(::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(MenuFlyoutItemBase::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^ UnwrapMenuFlyoutItemBase(Local<Value> value) {
     return MenuFlyoutItemBase::Unwrap<MenuFlyoutItemBase>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitMenuFlyoutItemBase(Local<Object> exports) {
    MenuFlyoutItemBase::Init(exports);
  }

  class AppBarSeparator : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("AppBarSeparator").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isCompact").ToLocalChecked(), IsCompactGetter, IsCompactSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dynamicOverflowOrder").ToLocalChecked(), DynamicOverflowOrderGetter, DynamicOverflowOrderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isInOverflow").ToLocalChecked(), IsInOverflowGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isCompactProperty").ToLocalChecked(), IsCompactPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dynamicOverflowOrderProperty").ToLocalChecked(), DynamicOverflowOrderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isInOverflowProperty").ToLocalChecked(), IsInOverflowPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("AppBarSeparator").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      AppBarSeparator(::Windows::UI::Xaml::Controls::AppBarSeparator^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::AppBarSeparator^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::AppBarSeparator^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::AppBarSeparator();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      AppBarSeparator *wrapperInstance = new AppBarSeparator(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::AppBarSeparator^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::AppBarSeparator^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapAppBarSeparator(winRtInstance));
    }





    static void IsCompactGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This())) {
        return;
      }

      AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());

      try  {
        bool result = wrapper->_instance->IsCompact;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCompactSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This())) {
        return;
      }

      AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsCompact = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DynamicOverflowOrderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This())) {
        return;
      }

      AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());

      try  {
        int result = wrapper->_instance->DynamicOverflowOrder;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DynamicOverflowOrderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This())) {
        return;
      }

      AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->DynamicOverflowOrder = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsInOverflowGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This())) {
        return;
      }

      AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());

      try  {
        bool result = wrapper->_instance->IsInOverflow;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsCompactPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AppBarSeparator::IsCompactProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DynamicOverflowOrderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AppBarSeparator::DynamicOverflowOrderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsInOverflowPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AppBarSeparator::IsInOverflowProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarSeparator *wrapper = AppBarSeparator::Unwrap<AppBarSeparator>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::AppBarSeparator^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapAppBarSeparator(::Windows::UI::Xaml::Controls::AppBarSeparator^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::AppBarSeparator^ UnwrapAppBarSeparator(Local<Value> value);
  };

  Persistent<FunctionTemplate> AppBarSeparator::s_constructorTemplate;

  v8::Local<v8::Value> WrapAppBarSeparator(::Windows::UI::Xaml::Controls::AppBarSeparator^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(AppBarSeparator::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::AppBarSeparator^ UnwrapAppBarSeparator(Local<Value> value) {
     return AppBarSeparator::Unwrap<AppBarSeparator>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitAppBarSeparator(Local<Object> exports) {
    AppBarSeparator::Init(exports);
  }

  class CalendarDatePicker : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("CalendarDatePicker").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "setDisplayDate", SetDisplayDate);
            Nan::SetPrototypeMethod(localRef, "setYearDecadeDisplayDimensions", SetYearDecadeDisplayDimensions);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerTemplate").ToLocalChecked(), HeaderTemplateGetter, HeaderTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("header").ToLocalChecked(), HeaderGetter, HeaderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("firstDayOfWeek").ToLocalChecked(), FirstDayOfWeekGetter, FirstDayOfWeekSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("displayMode").ToLocalChecked(), DisplayModeGetter, DisplayModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("calendarIdentifier").ToLocalChecked(), CalendarIdentifierGetter, CalendarIdentifierSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dateFormat").ToLocalChecked(), DateFormatGetter, DateFormatSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("calendarViewStyle").ToLocalChecked(), CalendarViewStyleGetter, CalendarViewStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dayOfWeekFormat").ToLocalChecked(), DayOfWeekFormatGetter, DayOfWeekFormatSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("placeholderText").ToLocalChecked(), PlaceholderTextGetter, PlaceholderTextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("date").ToLocalChecked(), DateGetter, DateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minDate").ToLocalChecked(), MinDateGetter, MinDateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxDate").ToLocalChecked(), MaxDateGetter, MaxDateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTodayHighlighted").ToLocalChecked(), IsTodayHighlightedGetter, IsTodayHighlightedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isOutOfScopeEnabled").ToLocalChecked(), IsOutOfScopeEnabledGetter, IsOutOfScopeEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isGroupLabelVisible").ToLocalChecked(), IsGroupLabelVisibleGetter, IsGroupLabelVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isCalendarOpen").ToLocalChecked(), IsCalendarOpenGetter, IsCalendarOpenSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lightDismissOverlayMode").ToLocalChecked(), LightDismissOverlayModeGetter, LightDismissOverlayModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("dateProperty").ToLocalChecked(), DatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("calendarIdentifierProperty").ToLocalChecked(), CalendarIdentifierPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("calendarViewStyleProperty").ToLocalChecked(), CalendarViewStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dateFormatProperty").ToLocalChecked(), DateFormatPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isCalendarOpenProperty").ToLocalChecked(), IsCalendarOpenPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dayOfWeekFormatProperty").ToLocalChecked(), DayOfWeekFormatPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("displayModeProperty").ToLocalChecked(), DisplayModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("firstDayOfWeekProperty").ToLocalChecked(), FirstDayOfWeekPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerProperty").ToLocalChecked(), HeaderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerTemplateProperty").ToLocalChecked(), HeaderTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isGroupLabelVisibleProperty").ToLocalChecked(), IsGroupLabelVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isOutOfScopeEnabledProperty").ToLocalChecked(), IsOutOfScopeEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTodayHighlightedProperty").ToLocalChecked(), IsTodayHighlightedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxDateProperty").ToLocalChecked(), MaxDatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minDateProperty").ToLocalChecked(), MinDatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("placeholderTextProperty").ToLocalChecked(), PlaceholderTextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightDismissOverlayModeProperty").ToLocalChecked(), LightDismissOverlayModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("CalendarDatePicker").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      CalendarDatePicker(::Windows::UI::Xaml::Controls::CalendarDatePicker^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::CalendarDatePicker^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::CalendarDatePicker^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::CalendarDatePicker();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      CalendarDatePicker *wrapperInstance = new CalendarDatePicker(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::CalendarDatePicker^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::CalendarDatePicker^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapCalendarDatePicker(winRtInstance));
    }


    static void SetDisplayDate(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      if (info.Length() == 1
        && info[0]->IsDate())
      {
        try
        {
          ::Windows::Foundation::DateTime arg0 = NodeRT::Utils::DateTimeFromJSDate(info[0]);
          
          wrapper->_instance->SetDisplayDate(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void SetYearDecadeDisplayDimensions(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      if (info.Length() == 2
        && info[0]->IsInt32()
        && info[1]->IsInt32())
      {
        try
        {
          int arg0 = static_cast<int>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          int arg1 = static_cast<int>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          wrapper->_instance->SetYearDecadeDisplayDimensions(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void HeaderTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->HeaderTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Header;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Header = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FirstDayOfWeekGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try  {
        ::Windows::Globalization::DayOfWeek result = wrapper->_instance->FirstDayOfWeek;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FirstDayOfWeekSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try {

        ::Windows::Globalization::DayOfWeek winRtValue = static_cast<::Windows::Globalization::DayOfWeek>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FirstDayOfWeek = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DisplayModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::CalendarViewDisplayMode result = wrapper->_instance->DisplayMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DisplayModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::CalendarViewDisplayMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::CalendarViewDisplayMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->DisplayMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CalendarIdentifierGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->CalendarIdentifier;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CalendarIdentifierSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->CalendarIdentifier = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DateFormatGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->DateFormat;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DateFormatSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->DateFormat = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CalendarViewStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->CalendarViewStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CalendarViewStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CalendarViewStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DayOfWeekFormatGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->DayOfWeekFormat;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DayOfWeekFormatSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->DayOfWeekFormat = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PlaceholderTextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->PlaceholderText;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PlaceholderTextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->PlaceholderText = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try  {
        ::Platform::IBox<::Windows::Foundation::DateTime>^ result = wrapper->_instance->Date;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(NodeRT::Utils::DateTimeToJS(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsDate()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try {

        ::Platform::IBox<::Windows::Foundation::DateTime>^ winRtValue = ref new ::Platform::Box<::Windows::Foundation::DateTime>(NodeRT::Utils::DateTimeFromJSDate(value));

        wrapper->_instance->Date = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinDateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try  {
        ::Windows::Foundation::DateTime result = wrapper->_instance->MinDate;
        info.GetReturnValue().Set(NodeRT::Utils::DateTimeToJS(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinDateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsDate()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try {

        ::Windows::Foundation::DateTime winRtValue = NodeRT::Utils::DateTimeFromJSDate(value);

        wrapper->_instance->MinDate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxDateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try  {
        ::Windows::Foundation::DateTime result = wrapper->_instance->MaxDate;
        info.GetReturnValue().Set(NodeRT::Utils::DateTimeToJS(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxDateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsDate()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try {

        ::Windows::Foundation::DateTime winRtValue = NodeRT::Utils::DateTimeFromJSDate(value);

        wrapper->_instance->MaxDate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTodayHighlightedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try  {
        bool result = wrapper->_instance->IsTodayHighlighted;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTodayHighlightedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTodayHighlighted = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsOutOfScopeEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try  {
        bool result = wrapper->_instance->IsOutOfScopeEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsOutOfScopeEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsOutOfScopeEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsGroupLabelVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try  {
        bool result = wrapper->_instance->IsGroupLabelVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsGroupLabelVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsGroupLabelVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsCalendarOpenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try  {
        bool result = wrapper->_instance->IsCalendarOpen;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCalendarOpenSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsCalendarOpen = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightDismissOverlayModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode result = wrapper->_instance->LightDismissOverlayMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LightDismissOverlayModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This())) {
        return;
      }

      CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::LightDismissOverlayMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->LightDismissOverlayMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void DatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarDatePicker::DateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CalendarIdentifierPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarDatePicker::CalendarIdentifierProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CalendarViewStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarDatePicker::CalendarViewStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DateFormatPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarDatePicker::DateFormatProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsCalendarOpenPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarDatePicker::IsCalendarOpenProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DayOfWeekFormatPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarDatePicker::DayOfWeekFormatProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DisplayModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarDatePicker::DisplayModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FirstDayOfWeekPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarDatePicker::FirstDayOfWeekProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarDatePicker::HeaderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarDatePicker::HeaderTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsGroupLabelVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarDatePicker::IsGroupLabelVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsOutOfScopeEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarDatePicker::IsOutOfScopeEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTodayHighlightedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarDatePicker::IsTodayHighlightedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxDatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarDatePicker::MaxDateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinDatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarDatePicker::MinDateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PlaceholderTextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarDatePicker::PlaceholderTextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightDismissOverlayModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CalendarDatePicker::LightDismissOverlayModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"calendarViewDayItemChanging", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->CalendarViewDayItemChanging::add(
            ref new ::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventHandler(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::CalendarView^ arg0, ::Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapCalendarView(arg0);
                  wrappedArg1 = WrapCalendarViewDayItemChangingEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"closed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Closed::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dateChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DateChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::CalendarDatePicker^, ::Windows::UI::Xaml::Controls::CalendarDatePickerDateChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::CalendarDatePicker^ arg0, ::Windows::UI::Xaml::Controls::CalendarDatePickerDateChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapCalendarDatePicker(arg0);
                  wrappedArg1 = WrapCalendarDatePickerDateChangedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"opened", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Opened::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"calendarViewDayItemChanging", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"closed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dateChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"opened", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"calendarViewDayItemChanging", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->CalendarViewDayItemChanging::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"closed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->Closed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dateChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->DateChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"opened", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->Opened::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CalendarDatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CalendarDatePicker *wrapper = CalendarDatePicker::Unwrap<CalendarDatePicker>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::CalendarDatePicker^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapCalendarDatePicker(::Windows::UI::Xaml::Controls::CalendarDatePicker^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::CalendarDatePicker^ UnwrapCalendarDatePicker(Local<Value> value);
  };

  Persistent<FunctionTemplate> CalendarDatePicker::s_constructorTemplate;

  v8::Local<v8::Value> WrapCalendarDatePicker(::Windows::UI::Xaml::Controls::CalendarDatePicker^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(CalendarDatePicker::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::CalendarDatePicker^ UnwrapCalendarDatePicker(Local<Value> value) {
     return CalendarDatePicker::Unwrap<CalendarDatePicker>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitCalendarDatePicker(Local<Object> exports) {
    CalendarDatePicker::Init(exports);
  }

  class DatePicker : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("DatePicker").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxYear").ToLocalChecked(), MaxYearGetter, MaxYearSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerTemplate").ToLocalChecked(), HeaderTemplateGetter, HeaderTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("header").ToLocalChecked(), HeaderGetter, HeaderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("calendarIdentifier").ToLocalChecked(), CalendarIdentifierGetter, CalendarIdentifierSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dayVisible").ToLocalChecked(), DayVisibleGetter, DayVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dayFormat").ToLocalChecked(), DayFormatGetter, DayFormatSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("date").ToLocalChecked(), DateGetter, DateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minYear").ToLocalChecked(), MinYearGetter, MinYearSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("yearFormat").ToLocalChecked(), YearFormatGetter, YearFormatSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("yearVisible").ToLocalChecked(), YearVisibleGetter, YearVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("orientation").ToLocalChecked(), OrientationGetter, OrientationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("monthVisible").ToLocalChecked(), MonthVisibleGetter, MonthVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("monthFormat").ToLocalChecked(), MonthFormatGetter, MonthFormatSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lightDismissOverlayMode").ToLocalChecked(), LightDismissOverlayModeGetter, LightDismissOverlayModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("dayFormatProperty").ToLocalChecked(), DayFormatPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("calendarIdentifierProperty").ToLocalChecked(), CalendarIdentifierPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dateProperty").ToLocalChecked(), DatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minYearProperty").ToLocalChecked(), MinYearPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dayVisibleProperty").ToLocalChecked(), DayVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerProperty").ToLocalChecked(), HeaderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerTemplateProperty").ToLocalChecked(), HeaderTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxYearProperty").ToLocalChecked(), MaxYearPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("monthFormatProperty").ToLocalChecked(), MonthFormatPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("monthVisibleProperty").ToLocalChecked(), MonthVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("orientationProperty").ToLocalChecked(), OrientationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("yearFormatProperty").ToLocalChecked(), YearFormatPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("yearVisibleProperty").ToLocalChecked(), YearVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightDismissOverlayModeProperty").ToLocalChecked(), LightDismissOverlayModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("DatePicker").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      DatePicker(::Windows::UI::Xaml::Controls::DatePicker^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::DatePicker^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::DatePicker^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::DatePicker();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      DatePicker *wrapperInstance = new DatePicker(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::DatePicker^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::DatePicker^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapDatePicker(winRtInstance));
    }





    static void MaxYearGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try  {
        ::Windows::Foundation::DateTime result = wrapper->_instance->MaxYear;
        info.GetReturnValue().Set(NodeRT::Utils::DateTimeToJS(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxYearSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsDate()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try {

        ::Windows::Foundation::DateTime winRtValue = NodeRT::Utils::DateTimeFromJSDate(value);

        wrapper->_instance->MaxYear = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->HeaderTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Header;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Header = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CalendarIdentifierGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->CalendarIdentifier;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CalendarIdentifierSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->CalendarIdentifier = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DayVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try  {
        bool result = wrapper->_instance->DayVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DayVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->DayVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DayFormatGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->DayFormat;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DayFormatSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->DayFormat = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try  {
        ::Windows::Foundation::DateTime result = wrapper->_instance->Date;
        info.GetReturnValue().Set(NodeRT::Utils::DateTimeToJS(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsDate()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try {

        ::Windows::Foundation::DateTime winRtValue = NodeRT::Utils::DateTimeFromJSDate(value);

        wrapper->_instance->Date = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinYearGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try  {
        ::Windows::Foundation::DateTime result = wrapper->_instance->MinYear;
        info.GetReturnValue().Set(NodeRT::Utils::DateTimeToJS(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinYearSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsDate()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try {

        ::Windows::Foundation::DateTime winRtValue = NodeRT::Utils::DateTimeFromJSDate(value);

        wrapper->_instance->MinYear = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void YearFormatGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->YearFormat;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void YearFormatSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->YearFormat = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void YearVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try  {
        bool result = wrapper->_instance->YearVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void YearVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->YearVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OrientationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Orientation result = wrapper->_instance->Orientation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OrientationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Orientation winRtValue = static_cast<::Windows::UI::Xaml::Controls::Orientation>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Orientation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MonthVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try  {
        bool result = wrapper->_instance->MonthVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MonthVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->MonthVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MonthFormatGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->MonthFormat;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MonthFormatSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->MonthFormat = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightDismissOverlayModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode result = wrapper->_instance->LightDismissOverlayMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LightDismissOverlayModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This())) {
        return;
      }

      DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::LightDismissOverlayMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->LightDismissOverlayMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void DayFormatPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePicker::DayFormatProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CalendarIdentifierPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePicker::CalendarIdentifierProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePicker::DateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinYearPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePicker::MinYearProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DayVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePicker::DayVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePicker::HeaderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePicker::HeaderTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxYearPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePicker::MaxYearProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MonthFormatPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePicker::MonthFormatProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MonthVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePicker::MonthVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OrientationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePicker::OrientationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void YearFormatPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePicker::YearFormatProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void YearVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePicker::YearVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightDismissOverlayModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePicker::LightDismissOverlayModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"dateChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DateChanged::add(
            ref new ::Windows::Foundation::EventHandler<::Windows::UI::Xaml::Controls::DatePickerValueChangedEventArgs^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::DatePickerValueChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapDatePickerValueChangedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"dateChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"dateChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->DateChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePicker *wrapper = DatePicker::Unwrap<DatePicker>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::DatePicker^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapDatePicker(::Windows::UI::Xaml::Controls::DatePicker^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::DatePicker^ UnwrapDatePicker(Local<Value> value);
  };

  Persistent<FunctionTemplate> DatePicker::s_constructorTemplate;

  v8::Local<v8::Value> WrapDatePicker(::Windows::UI::Xaml::Controls::DatePicker^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(DatePicker::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::DatePicker^ UnwrapDatePicker(Local<Value> value) {
     return DatePicker::Unwrap<DatePicker>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitDatePicker(Local<Object> exports) {
    DatePicker::Init(exports);
  }

  class Hub : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("Hub").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "scrollToSection", ScrollToSection);
            Nan::SetPrototypeMethod(localRef, "initializeViewChange", InitializeViewChange);
            Nan::SetPrototypeMethod(localRef, "completeViewChange", CompleteViewChange);
            Nan::SetPrototypeMethod(localRef, "makeVisible", MakeVisible);
            Nan::SetPrototypeMethod(localRef, "startViewChangeFrom", StartViewChangeFrom);
            Nan::SetPrototypeMethod(localRef, "startViewChangeTo", StartViewChangeTo);
            Nan::SetPrototypeMethod(localRef, "completeViewChangeFrom", CompleteViewChangeFrom);
            Nan::SetPrototypeMethod(localRef, "completeViewChangeTo", CompleteViewChangeTo);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("orientation").ToLocalChecked(), OrientationGetter, OrientationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerTemplate").ToLocalChecked(), HeaderTemplateGetter, HeaderTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("header").ToLocalChecked(), HeaderGetter, HeaderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultSectionIndex").ToLocalChecked(), DefaultSectionIndexGetter, DefaultSectionIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("sectionHeaders").ToLocalChecked(), SectionHeadersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("sections").ToLocalChecked(), SectionsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("sectionsInView").ToLocalChecked(), SectionsInViewGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("semanticZoomOwner").ToLocalChecked(), SemanticZoomOwnerGetter, SemanticZoomOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isZoomedInView").ToLocalChecked(), IsZoomedInViewGetter, IsZoomedInViewSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isActiveView").ToLocalChecked(), IsActiveViewGetter, IsActiveViewSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("defaultSectionIndexProperty").ToLocalChecked(), DefaultSectionIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerProperty").ToLocalChecked(), HeaderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerTemplateProperty").ToLocalChecked(), HeaderTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isActiveViewProperty").ToLocalChecked(), IsActiveViewPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isZoomedInViewProperty").ToLocalChecked(), IsZoomedInViewPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("orientationProperty").ToLocalChecked(), OrientationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("semanticZoomOwnerProperty").ToLocalChecked(), SemanticZoomOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("Hub").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      Hub(::Windows::UI::Xaml::Controls::Hub^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::Hub^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::Hub^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::Hub();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      Hub *wrapperInstance = new Hub(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::Hub^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::Hub^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapHub(winRtInstance));
    }


    static void ScrollToSection(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::HubSection^ arg0 = UnwrapHubSection(info[0]);
          
          wrapper->_instance->ScrollToSection(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void InitializeViewChange(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->InitializeViewChange();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void CompleteViewChange(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->CompleteViewChange();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void MakeVisible(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg0 = UnwrapSemanticZoomLocation(info[0]);
          
          wrapper->_instance->MakeVisible(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void StartViewChangeFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg0 = UnwrapSemanticZoomLocation(info[0]);
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg1 = UnwrapSemanticZoomLocation(info[1]);
          
          wrapper->_instance->StartViewChangeFrom(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void StartViewChangeTo(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg0 = UnwrapSemanticZoomLocation(info[0]);
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg1 = UnwrapSemanticZoomLocation(info[1]);
          
          wrapper->_instance->StartViewChangeTo(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void CompleteViewChangeFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg0 = UnwrapSemanticZoomLocation(info[0]);
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg1 = UnwrapSemanticZoomLocation(info[1]);
          
          wrapper->_instance->CompleteViewChangeFrom(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void CompleteViewChangeTo(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoomLocation^>(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg0 = UnwrapSemanticZoomLocation(info[0]);
          ::Windows::UI::Xaml::Controls::SemanticZoomLocation^ arg1 = UnwrapSemanticZoomLocation(info[1]);
          
          wrapper->_instance->CompleteViewChangeTo(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void OrientationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Orientation result = wrapper->_instance->Orientation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OrientationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Orientation winRtValue = static_cast<::Windows::UI::Xaml::Controls::Orientation>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Orientation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->HeaderTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Header;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Header = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultSectionIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      try  {
        int result = wrapper->_instance->DefaultSectionIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultSectionIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->DefaultSectionIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SectionHeadersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      try  {
        ::Windows::Foundation::Collections::IObservableVector<::Platform::Object^>^ result = wrapper->_instance->SectionHeaders;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "IObservableVector`1", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SectionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Controls::HubSection^>^ result = wrapper->_instance->Sections;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Controls::HubSection^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Controls::HubSection^ val) -> Local<Value> {
              return WrapHubSection(val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Controls::HubSection^ {
              return UnwrapHubSection(value);
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SectionsInViewGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Controls::HubSection^>^ result = wrapper->_instance->SectionsInView;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Controls::HubSection^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Controls::HubSection^ val) -> Local<Value> {
              return WrapHubSection(val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::HubSection^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Controls::HubSection^ {
              return UnwrapHubSection(value);
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SemanticZoomOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::SemanticZoom^ result = wrapper->_instance->SemanticZoomOwner;
        info.GetReturnValue().Set(WrapSemanticZoom(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SemanticZoomOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::SemanticZoom^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::SemanticZoom^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SemanticZoomOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsZoomedInViewGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      try  {
        bool result = wrapper->_instance->IsZoomedInView;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsZoomedInViewSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsZoomedInView = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsActiveViewGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      try  {
        bool result = wrapper->_instance->IsActiveView;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsActiveViewSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This())) {
        return;
      }

      Hub *wrapper = Hub::Unwrap<Hub>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsActiveView = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void DefaultSectionIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Hub::DefaultSectionIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Hub::HeaderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Hub::HeaderTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsActiveViewPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Hub::IsActiveViewProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsZoomedInViewPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Hub::IsZoomedInViewProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OrientationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Hub::OrientationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SemanticZoomOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Hub::SemanticZoomOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"sectionHeaderClick", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SectionHeaderClick::add(
            ref new ::Windows::UI::Xaml::Controls::HubSectionHeaderClickEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::HubSectionHeaderClickEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapHubSectionHeaderClickEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sectionsInViewChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SectionsInViewChanged::add(
            ref new ::Windows::UI::Xaml::Controls::SectionsInViewChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::SectionsInViewChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapSectionsInViewChangedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Hub *wrapper = Hub::Unwrap<Hub>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"sectionHeaderClick", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sectionsInViewChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"sectionHeaderClick", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->SectionHeaderClick::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sectionsInViewChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->SectionsInViewChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Hub^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Hub *wrapper = Hub::Unwrap<Hub>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::Hub^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapHub(::Windows::UI::Xaml::Controls::Hub^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::Hub^ UnwrapHub(Local<Value> value);
  };

  Persistent<FunctionTemplate> Hub::s_constructorTemplate;

  v8::Local<v8::Value> WrapHub(::Windows::UI::Xaml::Controls::Hub^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(Hub::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::Hub^ UnwrapHub(Local<Value> value) {
     return Hub::Unwrap<Hub>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitHub(Local<Object> exports) {
    Hub::Init(exports);
  }

  class MediaPlayerElement : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("MediaPlayerElement").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "setMediaPlayer", SetMediaPlayer);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transportControls").ToLocalChecked(), TransportControlsGetter, TransportControlsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("stretch").ToLocalChecked(), StretchGetter, StretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("source").ToLocalChecked(), SourceGetter, SourceSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("posterSource").ToLocalChecked(), PosterSourceGetter, PosterSourceSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFullWindow").ToLocalChecked(), IsFullWindowGetter, IsFullWindowSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("autoPlay").ToLocalChecked(), AutoPlayGetter, AutoPlaySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("areTransportControlsEnabled").ToLocalChecked(), AreTransportControlsEnabledGetter, AreTransportControlsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("mediaPlayer").ToLocalChecked(), MediaPlayerGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("areTransportControlsEnabledProperty").ToLocalChecked(), AreTransportControlsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("autoPlayProperty").ToLocalChecked(), AutoPlayPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFullWindowProperty").ToLocalChecked(), IsFullWindowPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("mediaPlayerProperty").ToLocalChecked(), MediaPlayerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("posterSourceProperty").ToLocalChecked(), PosterSourcePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("sourceProperty").ToLocalChecked(), SourcePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("stretchProperty").ToLocalChecked(), StretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("MediaPlayerElement").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      MediaPlayerElement(::Windows::UI::Xaml::Controls::MediaPlayerElement^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::MediaPlayerElement^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::MediaPlayerElement^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::MediaPlayerElement();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      MediaPlayerElement *wrapperInstance = new MediaPlayerElement(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::MediaPlayerElement^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::MediaPlayerElement^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapMediaPlayerElement(winRtInstance));
    }


    static void SetMediaPlayer(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This())) {
        return;
      }

      MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::Media::Playback::MediaPlayer^>(info[0]))
      {
        try
        {
          ::Windows::Media::Playback::MediaPlayer^ arg0 = dynamic_cast<::Windows::Media::Playback::MediaPlayer^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->SetMediaPlayer(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void TransportControlsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This())) {
        return;
      }

      MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::MediaTransportControls^ result = wrapper->_instance->TransportControls;
        info.GetReturnValue().Set(WrapMediaTransportControls(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransportControlsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaTransportControls^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This())) {
        return;
      }

      MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::MediaTransportControls^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::MediaTransportControls^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->TransportControls = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This())) {
        return;
      }

      MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Stretch result = wrapper->_instance->Stretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This())) {
        return;
      }

      MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Stretch winRtValue = static_cast<::Windows::UI::Xaml::Media::Stretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Stretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This())) {
        return;
      }

      MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());

      try  {
        ::Windows::Media::Playback::IMediaPlaybackSource^ result = wrapper->_instance->Source;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Media.Playback", "IMediaPlaybackSource", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SourceSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Media::Playback::IMediaPlaybackSource^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This())) {
        return;
      }

      MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());

      try {

        ::Windows::Media::Playback::IMediaPlaybackSource^ winRtValue = dynamic_cast<::Windows::Media::Playback::IMediaPlaybackSource^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Source = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PosterSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This())) {
        return;
      }

      MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ImageSource^ result = wrapper->_instance->PosterSource;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "ImageSource", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PosterSourceSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::ImageSource^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This())) {
        return;
      }

      MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ImageSource^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::ImageSource^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->PosterSource = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFullWindowGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This())) {
        return;
      }

      MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsFullWindow;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFullWindowSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This())) {
        return;
      }

      MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFullWindow = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AutoPlayGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This())) {
        return;
      }

      MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());

      try  {
        bool result = wrapper->_instance->AutoPlay;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AutoPlaySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This())) {
        return;
      }

      MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AutoPlay = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AreTransportControlsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This())) {
        return;
      }

      MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());

      try  {
        bool result = wrapper->_instance->AreTransportControlsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AreTransportControlsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This())) {
        return;
      }

      MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AreTransportControlsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MediaPlayerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This())) {
        return;
      }

      MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());

      try  {
        ::Windows::Media::Playback::MediaPlayer^ result = wrapper->_instance->MediaPlayer;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Media.Playback", "MediaPlayer", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void AreTransportControlsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaPlayerElement::AreTransportControlsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AutoPlayPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaPlayerElement::AutoPlayProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFullWindowPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaPlayerElement::IsFullWindowProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MediaPlayerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaPlayerElement::MediaPlayerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PosterSourcePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaPlayerElement::PosterSourceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SourcePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaPlayerElement::SourceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MediaPlayerElement::StretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MediaPlayerElement^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MediaPlayerElement *wrapper = MediaPlayerElement::Unwrap<MediaPlayerElement>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::MediaPlayerElement^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapMediaPlayerElement(::Windows::UI::Xaml::Controls::MediaPlayerElement^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::MediaPlayerElement^ UnwrapMediaPlayerElement(Local<Value> value);
  };

  Persistent<FunctionTemplate> MediaPlayerElement::s_constructorTemplate;

  v8::Local<v8::Value> WrapMediaPlayerElement(::Windows::UI::Xaml::Controls::MediaPlayerElement^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(MediaPlayerElement::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::MediaPlayerElement^ UnwrapMediaPlayerElement(Local<Value> value) {
     return MediaPlayerElement::Unwrap<MediaPlayerElement>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitMediaPlayerElement(Local<Object> exports) {
    MediaPlayerElement::Init(exports);
  }

  class RichEditBox : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("RichEditBox").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);

        Local<Function> func;
        Local<FunctionTemplate> funcTemplate;


          
            Nan::SetPrototypeMethod(localRef, "getLinguisticAlternativesAsync", GetLinguisticAlternativesAsync);
          

          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textWrapping").ToLocalChecked(), TextWrappingGetter, TextWrappingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textAlignment").ToLocalChecked(), TextAlignmentGetter, TextAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextPredictionEnabled").ToLocalChecked(), IsTextPredictionEnabledGetter, IsTextPredictionEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("acceptsReturn").ToLocalChecked(), AcceptsReturnGetter, AcceptsReturnSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSpellCheckEnabled").ToLocalChecked(), IsSpellCheckEnabledGetter, IsSpellCheckEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isReadOnly").ToLocalChecked(), IsReadOnlyGetter, IsReadOnlySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("inputScope").ToLocalChecked(), InputScopeGetter, InputScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("document").ToLocalChecked(), DocumentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("header").ToLocalChecked(), HeaderGetter, HeaderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("placeholderText").ToLocalChecked(), PlaceholderTextGetter, PlaceholderTextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectionHighlightColor").ToLocalChecked(), SelectionHighlightColorGetter, SelectionHighlightColorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("preventKeyboardDisplayOnProgrammaticFocus").ToLocalChecked(), PreventKeyboardDisplayOnProgrammaticFocusGetter, PreventKeyboardDisplayOnProgrammaticFocusSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isColorFontEnabled").ToLocalChecked(), IsColorFontEnabledGetter, IsColorFontEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerTemplate").ToLocalChecked(), HeaderTemplateGetter, HeaderTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textReadingOrder").ToLocalChecked(), TextReadingOrderGetter, TextReadingOrderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredCandidateWindowAlignment").ToLocalChecked(), DesiredCandidateWindowAlignmentGetter, DesiredCandidateWindowAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clipboardCopyFormat").ToLocalChecked(), ClipboardCopyFormatGetter, ClipboardCopyFormatSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectionHighlightColorWhenNotFocused").ToLocalChecked(), SelectionHighlightColorWhenNotFocusedGetter, SelectionHighlightColorWhenNotFocusedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxLength").ToLocalChecked(), MaxLengthGetter, MaxLengthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("textWrappingProperty").ToLocalChecked(), TextWrappingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textAlignmentProperty").ToLocalChecked(), TextAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextPredictionEnabledProperty").ToLocalChecked(), IsTextPredictionEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isSpellCheckEnabledProperty").ToLocalChecked(), IsSpellCheckEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isReadOnlyProperty").ToLocalChecked(), IsReadOnlyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("inputScopeProperty").ToLocalChecked(), InputScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("acceptsReturnProperty").ToLocalChecked(), AcceptsReturnPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectionHighlightColorProperty").ToLocalChecked(), SelectionHighlightColorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerProperty").ToLocalChecked(), HeaderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerTemplateProperty").ToLocalChecked(), HeaderTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isColorFontEnabledProperty").ToLocalChecked(), IsColorFontEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("placeholderTextProperty").ToLocalChecked(), PlaceholderTextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("preventKeyboardDisplayOnProgrammaticFocusProperty").ToLocalChecked(), PreventKeyboardDisplayOnProgrammaticFocusPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("desiredCandidateWindowAlignmentProperty").ToLocalChecked(), DesiredCandidateWindowAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textReadingOrderProperty").ToLocalChecked(), TextReadingOrderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipboardCopyFormatProperty").ToLocalChecked(), ClipboardCopyFormatPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectionHighlightColorWhenNotFocusedProperty").ToLocalChecked(), SelectionHighlightColorWhenNotFocusedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxLengthProperty").ToLocalChecked(), MaxLengthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("RichEditBox").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      RichEditBox(::Windows::UI::Xaml::Controls::RichEditBox^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::RichEditBox^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::RichEditBox^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::RichEditBox();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      RichEditBox *wrapperInstance = new RichEditBox(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::RichEditBox^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::RichEditBox^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapRichEditBox(winRtInstance));
    }

    static void GetLinguisticAlternativesAsync(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      if (info.Length() == 0 || !info[info.Length() -1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: No callback was given")));
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      ::Windows::Foundation::IAsyncOperation<::Windows::Foundation::Collections::IVectorView<::Platform::String^>^>^ op;


      if (info.Length() == 1)
      {
        try
        {
          op = wrapper->_instance->GetLinguisticAlternativesAsync();
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }

      auto opTask = create_task(op);
      uv_async_t* asyncToken = NodeUtils::Async::GetAsyncToken(info[info.Length() -1].As<Function>());

      opTask.then( [asyncToken] (task<::Windows::Foundation::Collections::IVectorView<::Platform::String^>^> t) {
        try {
          auto result = t.get();
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [result](NodeUtils::InvokeCallbackDelegate invokeCallback) {


            Local<Value> error;
            Local<Value> arg1;
            {
              TryCatch tryCatch;
              arg1 = NodeRT::Collections::VectorViewWrapper<::Platform::String^>::CreateVectorViewWrapper(result, 
            [](::Platform::String^ val) -> Local<Value> {
              return NodeRT::Utils::NewString(val->Data());
            },
            [](Local<Value> value) -> bool {
              return value->IsString();
            },
            [](Local<Value> value) -> ::Platform::String^ {
              return ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));
            }
          );
              if (tryCatch.HasCaught())
              {
                error = Nan::To<Object>(tryCatch.Exception()).ToLocalChecked();
              }
              else
              {
                error = Undefined();
              }
              if (arg1.IsEmpty()) arg1 = Undefined();
            }
            Local<Value> args[] = {error, arg1};


            invokeCallback(_countof(args), args);
          });
        } catch (Platform::Exception^ exception) {
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [exception](NodeUtils::InvokeCallbackDelegate invokeCallback) {
            Local<Value> error = NodeRT::Utils::WinRtExceptionToJsError(exception);

            Local<Value> args[] = {error};
            invokeCallback(_countof(args), args);
          });
        }
      });
    }




    static void TextWrappingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try  {
        ::Windows::UI::Xaml::TextWrapping result = wrapper->_instance->TextWrapping;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextWrappingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try {

        ::Windows::UI::Xaml::TextWrapping winRtValue = static_cast<::Windows::UI::Xaml::TextWrapping>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TextWrapping = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try  {
        ::Windows::UI::Xaml::TextAlignment result = wrapper->_instance->TextAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try {

        ::Windows::UI::Xaml::TextAlignment winRtValue = static_cast<::Windows::UI::Xaml::TextAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TextAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTextPredictionEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextPredictionEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextPredictionEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextPredictionEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AcceptsReturnGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try  {
        bool result = wrapper->_instance->AcceptsReturn;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AcceptsReturnSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AcceptsReturn = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsSpellCheckEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try  {
        bool result = wrapper->_instance->IsSpellCheckEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSpellCheckEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsSpellCheckEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsReadOnlyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try  {
        bool result = wrapper->_instance->IsReadOnly;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsReadOnlySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsReadOnly = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void InputScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::InputScope^ result = wrapper->_instance->InputScope;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "InputScope", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void InputScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::InputScope^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try {

        ::Windows::UI::Xaml::Input::InputScope^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Input::InputScope^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->InputScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DocumentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try  {
        ::Windows::UI::Text::ITextDocument^ result = wrapper->_instance->Document;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Text", "ITextDocument", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Header;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Header = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PlaceholderTextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->PlaceholderText;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PlaceholderTextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->PlaceholderText = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectionHighlightColorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::SolidColorBrush^ result = wrapper->_instance->SelectionHighlightColor;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "SolidColorBrush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectionHighlightColorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::SolidColorBrush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try {

        ::Windows::UI::Xaml::Media::SolidColorBrush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::SolidColorBrush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectionHighlightColor = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PreventKeyboardDisplayOnProgrammaticFocusGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try  {
        bool result = wrapper->_instance->PreventKeyboardDisplayOnProgrammaticFocus;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PreventKeyboardDisplayOnProgrammaticFocusSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->PreventKeyboardDisplayOnProgrammaticFocus = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsColorFontEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try  {
        bool result = wrapper->_instance->IsColorFontEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsColorFontEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsColorFontEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->HeaderTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextReadingOrderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try  {
        ::Windows::UI::Xaml::TextReadingOrder result = wrapper->_instance->TextReadingOrder;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextReadingOrderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try {

        ::Windows::UI::Xaml::TextReadingOrder winRtValue = static_cast<::Windows::UI::Xaml::TextReadingOrder>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TextReadingOrder = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredCandidateWindowAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::CandidateWindowAlignment result = wrapper->_instance->DesiredCandidateWindowAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DesiredCandidateWindowAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::CandidateWindowAlignment winRtValue = static_cast<::Windows::UI::Xaml::Controls::CandidateWindowAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->DesiredCandidateWindowAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipboardCopyFormatGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RichEditClipboardFormat result = wrapper->_instance->ClipboardCopyFormat;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipboardCopyFormatSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RichEditClipboardFormat winRtValue = static_cast<::Windows::UI::Xaml::Controls::RichEditClipboardFormat>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ClipboardCopyFormat = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectionHighlightColorWhenNotFocusedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::SolidColorBrush^ result = wrapper->_instance->SelectionHighlightColorWhenNotFocused;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "SolidColorBrush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectionHighlightColorWhenNotFocusedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::SolidColorBrush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try {

        ::Windows::UI::Xaml::Media::SolidColorBrush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::SolidColorBrush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectionHighlightColorWhenNotFocused = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxLengthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try  {
        int result = wrapper->_instance->MaxLength;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxLengthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This())) {
        return;
      }

      RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->MaxLength = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void TextWrappingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichEditBox::TextWrappingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichEditBox::TextAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextPredictionEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichEditBox::IsTextPredictionEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsSpellCheckEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichEditBox::IsSpellCheckEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsReadOnlyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichEditBox::IsReadOnlyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void InputScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichEditBox::InputScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AcceptsReturnPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichEditBox::AcceptsReturnProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectionHighlightColorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichEditBox::SelectionHighlightColorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichEditBox::HeaderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichEditBox::HeaderTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsColorFontEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichEditBox::IsColorFontEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PlaceholderTextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichEditBox::PlaceholderTextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PreventKeyboardDisplayOnProgrammaticFocusPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichEditBox::PreventKeyboardDisplayOnProgrammaticFocusProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DesiredCandidateWindowAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichEditBox::DesiredCandidateWindowAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextReadingOrderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichEditBox::TextReadingOrderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipboardCopyFormatPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichEditBox::ClipboardCopyFormatProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectionHighlightColorWhenNotFocusedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichEditBox::SelectionHighlightColorWhenNotFocusedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxLengthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RichEditBox::MaxLengthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"contextMenuOpening", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextMenuOpening::add(
            ref new ::Windows::UI::Xaml::Controls::ContextMenuOpeningEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::ContextMenuEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapContextMenuEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SelectionChanged::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"textChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->TextChanged::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"paste", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Paste::add(
            ref new ::Windows::UI::Xaml::Controls::TextControlPasteEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::TextControlPasteEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapTextControlPasteEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"candidateWindowBoundsChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->CandidateWindowBoundsChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::RichEditBox^, ::Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::RichEditBox^ arg0, ::Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapRichEditBox(arg0);
                  wrappedArg1 = WrapCandidateWindowBoundsChangedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"textChanging", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->TextChanging::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::RichEditBox^, ::Windows::UI::Xaml::Controls::RichEditBoxTextChangingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::RichEditBox^ arg0, ::Windows::UI::Xaml::Controls::RichEditBoxTextChangingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapRichEditBox(arg0);
                  wrappedArg1 = WrapRichEditBoxTextChangingEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"textCompositionChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->TextCompositionChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::RichEditBox^, ::Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::RichEditBox^ arg0, ::Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapRichEditBox(arg0);
                  wrappedArg1 = WrapTextCompositionChangedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"textCompositionEnded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->TextCompositionEnded::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::RichEditBox^, ::Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::RichEditBox^ arg0, ::Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapRichEditBox(arg0);
                  wrappedArg1 = WrapTextCompositionEndedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"textCompositionStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->TextCompositionStarted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::RichEditBox^, ::Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::RichEditBox^ arg0, ::Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapRichEditBox(arg0);
                  wrappedArg1 = WrapTextCompositionStartedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"contextMenuOpening", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"textChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"paste", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"candidateWindowBoundsChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"textChanging", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"textCompositionChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"textCompositionEnded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"textCompositionStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"contextMenuOpening", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->ContextMenuOpening::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->SelectionChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"textChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->TextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"paste", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->Paste::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"candidateWindowBoundsChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->CandidateWindowBoundsChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"textChanging", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->TextChanging::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"textCompositionChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->TextCompositionChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"textCompositionEnded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->TextCompositionEnded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"textCompositionStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->TextCompositionStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RichEditBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          RichEditBox *wrapper = RichEditBox::Unwrap<RichEditBox>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::RichEditBox^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapRichEditBox(::Windows::UI::Xaml::Controls::RichEditBox^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::RichEditBox^ UnwrapRichEditBox(Local<Value> value);
  };

  Persistent<FunctionTemplate> RichEditBox::s_constructorTemplate;

  v8::Local<v8::Value> WrapRichEditBox(::Windows::UI::Xaml::Controls::RichEditBox^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(RichEditBox::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::RichEditBox^ UnwrapRichEditBox(Local<Value> value) {
     return RichEditBox::Unwrap<RichEditBox>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitRichEditBox(Local<Object> exports) {
    RichEditBox::Init(exports);
  }

  class SearchBox : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("SearchBox").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "setLocalContentSuggestionSettings", SetLocalContentSuggestionSettings);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("searchHistoryEnabled").ToLocalChecked(), SearchHistoryEnabledGetter, SearchHistoryEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("searchHistoryContext").ToLocalChecked(), SearchHistoryContextGetter, SearchHistoryContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("queryText").ToLocalChecked(), QueryTextGetter, QueryTextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("placeholderText").ToLocalChecked(), PlaceholderTextGetter, PlaceholderTextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusOnKeyboardInput").ToLocalChecked(), FocusOnKeyboardInputGetter, FocusOnKeyboardInputSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("chooseSuggestionOnEnter").ToLocalChecked(), ChooseSuggestionOnEnterGetter, ChooseSuggestionOnEnterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("chooseSuggestionOnEnterProperty").ToLocalChecked(), ChooseSuggestionOnEnterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusOnKeyboardInputProperty").ToLocalChecked(), FocusOnKeyboardInputPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("placeholderTextProperty").ToLocalChecked(), PlaceholderTextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("queryTextProperty").ToLocalChecked(), QueryTextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("searchHistoryContextProperty").ToLocalChecked(), SearchHistoryContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("searchHistoryEnabledProperty").ToLocalChecked(), SearchHistoryEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("SearchBox").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      SearchBox(::Windows::UI::Xaml::Controls::SearchBox^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::SearchBox^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::SearchBox^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::SearchBox();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      SearchBox *wrapperInstance = new SearchBox(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::SearchBox^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::SearchBox^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapSearchBox(winRtInstance));
    }


    static void SetLocalContentSuggestionSettings(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This())) {
        return;
      }

      SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Search::LocalContentSuggestionSettings^>(info[0]))
      {
        try
        {
          ::Windows::ApplicationModel::Search::LocalContentSuggestionSettings^ arg0 = dynamic_cast<::Windows::ApplicationModel::Search::LocalContentSuggestionSettings^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->SetLocalContentSuggestionSettings(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void SearchHistoryEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This())) {
        return;
      }

      SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());

      try  {
        bool result = wrapper->_instance->SearchHistoryEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SearchHistoryEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This())) {
        return;
      }

      SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->SearchHistoryEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SearchHistoryContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This())) {
        return;
      }

      SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->SearchHistoryContext;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SearchHistoryContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This())) {
        return;
      }

      SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->SearchHistoryContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void QueryTextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This())) {
        return;
      }

      SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->QueryText;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void QueryTextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This())) {
        return;
      }

      SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->QueryText = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PlaceholderTextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This())) {
        return;
      }

      SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->PlaceholderText;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PlaceholderTextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This())) {
        return;
      }

      SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->PlaceholderText = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusOnKeyboardInputGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This())) {
        return;
      }

      SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());

      try  {
        bool result = wrapper->_instance->FocusOnKeyboardInput;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusOnKeyboardInputSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This())) {
        return;
      }

      SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->FocusOnKeyboardInput = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChooseSuggestionOnEnterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This())) {
        return;
      }

      SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());

      try  {
        bool result = wrapper->_instance->ChooseSuggestionOnEnter;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ChooseSuggestionOnEnterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This())) {
        return;
      }

      SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ChooseSuggestionOnEnter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ChooseSuggestionOnEnterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SearchBox::ChooseSuggestionOnEnterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusOnKeyboardInputPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SearchBox::FocusOnKeyboardInputProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PlaceholderTextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SearchBox::PlaceholderTextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void QueryTextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SearchBox::QueryTextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SearchHistoryContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SearchBox::SearchHistoryContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SearchHistoryEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SearchBox::SearchHistoryEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"prepareForFocusOnKeyboardInput", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PrepareForFocusOnKeyboardInput::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::SearchBox^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::SearchBox^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapSearchBox(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"queryChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->QueryChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::SearchBox^, ::Windows::UI::Xaml::Controls::SearchBoxQueryChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::SearchBox^ arg0, ::Windows::UI::Xaml::Controls::SearchBoxQueryChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapSearchBox(arg0);
                  wrappedArg1 = WrapSearchBoxQueryChangedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"querySubmitted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->QuerySubmitted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::SearchBox^, ::Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::SearchBox^ arg0, ::Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapSearchBox(arg0);
                  wrappedArg1 = WrapSearchBoxQuerySubmittedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"resultSuggestionChosen", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ResultSuggestionChosen::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::SearchBox^, ::Windows::UI::Xaml::Controls::SearchBoxResultSuggestionChosenEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::SearchBox^ arg0, ::Windows::UI::Xaml::Controls::SearchBoxResultSuggestionChosenEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapSearchBox(arg0);
                  wrappedArg1 = WrapSearchBoxResultSuggestionChosenEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"suggestionsRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SuggestionsRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::SearchBox^, ::Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::SearchBox^ arg0, ::Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapSearchBox(arg0);
                  wrappedArg1 = WrapSearchBoxSuggestionsRequestedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"prepareForFocusOnKeyboardInput", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"queryChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"querySubmitted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"resultSuggestionChosen", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"suggestionsRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"prepareForFocusOnKeyboardInput", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->PrepareForFocusOnKeyboardInput::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"queryChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->QueryChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"querySubmitted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->QuerySubmitted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"resultSuggestionChosen", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->ResultSuggestionChosen::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"suggestionsRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->SuggestionsRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SearchBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SearchBox *wrapper = SearchBox::Unwrap<SearchBox>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::SearchBox^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapSearchBox(::Windows::UI::Xaml::Controls::SearchBox^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::SearchBox^ UnwrapSearchBox(Local<Value> value);
  };

  Persistent<FunctionTemplate> SearchBox::s_constructorTemplate;

  v8::Local<v8::Value> WrapSearchBox(::Windows::UI::Xaml::Controls::SearchBox^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(SearchBox::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::SearchBox^ UnwrapSearchBox(Local<Value> value) {
     return SearchBox::Unwrap<SearchBox>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitSearchBox(Local<Object> exports) {
    SearchBox::Init(exports);
  }

  class SplitView : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("SplitView").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("panePlacement").ToLocalChecked(), PanePlacementGetter, PanePlacementSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("paneBackground").ToLocalChecked(), PaneBackgroundGetter, PaneBackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pane").ToLocalChecked(), PaneGetter, PaneSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("openPaneLength").ToLocalChecked(), OpenPaneLengthGetter, OpenPaneLengthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPaneOpen").ToLocalChecked(), IsPaneOpenGetter, IsPaneOpenSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("displayMode").ToLocalChecked(), DisplayModeGetter, DisplayModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compactPaneLength").ToLocalChecked(), CompactPaneLengthGetter, CompactPaneLengthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("templateSettings").ToLocalChecked(), TemplateSettingsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lightDismissOverlayMode").ToLocalChecked(), LightDismissOverlayModeGetter, LightDismissOverlayModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("compactPaneLengthProperty").ToLocalChecked(), CompactPaneLengthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("displayModeProperty").ToLocalChecked(), DisplayModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPaneOpenProperty").ToLocalChecked(), IsPaneOpenPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("openPaneLengthProperty").ToLocalChecked(), OpenPaneLengthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paneBackgroundProperty").ToLocalChecked(), PaneBackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("panePlacementProperty").ToLocalChecked(), PanePlacementPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paneProperty").ToLocalChecked(), PanePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateSettingsProperty").ToLocalChecked(), TemplateSettingsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightDismissOverlayModeProperty").ToLocalChecked(), LightDismissOverlayModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("SplitView").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      SplitView(::Windows::UI::Xaml::Controls::SplitView^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::SplitView^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::SplitView^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::SplitView();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      SplitView *wrapperInstance = new SplitView(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::SplitView^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::SplitView^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapSplitView(winRtInstance));
    }





    static void PanePlacementGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This())) {
        return;
      }

      SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::SplitViewPanePlacement result = wrapper->_instance->PanePlacement;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PanePlacementSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This())) {
        return;
      }

      SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::SplitViewPanePlacement winRtValue = static_cast<::Windows::UI::Xaml::Controls::SplitViewPanePlacement>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->PanePlacement = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaneBackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This())) {
        return;
      }

      SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->PaneBackground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaneBackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This())) {
        return;
      }

      SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->PaneBackground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaneGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This())) {
        return;
      }

      SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->Pane;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaneSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This())) {
        return;
      }

      SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());

      try {

        ::Windows::UI::Xaml::UIElement^ winRtValue = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Pane = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpenPaneLengthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This())) {
        return;
      }

      SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());

      try  {
        double result = wrapper->_instance->OpenPaneLength;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpenPaneLengthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This())) {
        return;
      }

      SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->OpenPaneLength = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPaneOpenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This())) {
        return;
      }

      SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());

      try  {
        bool result = wrapper->_instance->IsPaneOpen;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPaneOpenSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This())) {
        return;
      }

      SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsPaneOpen = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DisplayModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This())) {
        return;
      }

      SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::SplitViewDisplayMode result = wrapper->_instance->DisplayMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DisplayModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This())) {
        return;
      }

      SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::SplitViewDisplayMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::SplitViewDisplayMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->DisplayMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This())) {
        return;
      }

      SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This())) {
        return;
      }

      SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());

      try {

        ::Windows::UI::Xaml::UIElement^ winRtValue = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CompactPaneLengthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This())) {
        return;
      }

      SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());

      try  {
        double result = wrapper->_instance->CompactPaneLength;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompactPaneLengthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This())) {
        return;
      }

      SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->CompactPaneLength = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateSettingsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This())) {
        return;
      }

      SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::SplitViewTemplateSettings^ result = wrapper->_instance->TemplateSettings;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "SplitViewTemplateSettings", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LightDismissOverlayModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This())) {
        return;
      }

      SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode result = wrapper->_instance->LightDismissOverlayMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LightDismissOverlayModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This())) {
        return;
      }

      SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::LightDismissOverlayMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->LightDismissOverlayMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void CompactPaneLengthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SplitView::CompactPaneLengthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SplitView::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DisplayModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SplitView::DisplayModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPaneOpenPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SplitView::IsPaneOpenProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpenPaneLengthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SplitView::OpenPaneLengthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaneBackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SplitView::PaneBackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PanePlacementPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SplitView::PanePlacementProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PanePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SplitView::PaneProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplateSettingsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SplitView::TemplateSettingsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightDismissOverlayModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::SplitView::LightDismissOverlayModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"paneClosed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PaneClosed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::SplitView^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::SplitView^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapSplitView(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"paneClosing", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PaneClosing::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::SplitView^, ::Windows::UI::Xaml::Controls::SplitViewPaneClosingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::SplitView^ arg0, ::Windows::UI::Xaml::Controls::SplitViewPaneClosingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapSplitView(arg0);
                  wrappedArg1 = WrapSplitViewPaneClosingEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"paneClosed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"paneClosing", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"paneClosed", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->PaneClosed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"paneClosing", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->PaneClosing::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SplitView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplitView *wrapper = SplitView::Unwrap<SplitView>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::SplitView^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapSplitView(::Windows::UI::Xaml::Controls::SplitView^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::SplitView^ UnwrapSplitView(Local<Value> value);
  };

  Persistent<FunctionTemplate> SplitView::s_constructorTemplate;

  v8::Local<v8::Value> WrapSplitView(::Windows::UI::Xaml::Controls::SplitView^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(SplitView::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::SplitView^ UnwrapSplitView(Local<Value> value) {
     return SplitView::Unwrap<SplitView>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitSplitView(Local<Object> exports) {
    SplitView::Init(exports);
  }

  class TimePicker : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("TimePicker").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("time").ToLocalChecked(), TimeGetter, TimeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minuteIncrement").ToLocalChecked(), MinuteIncrementGetter, MinuteIncrementSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerTemplate").ToLocalChecked(), HeaderTemplateGetter, HeaderTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("header").ToLocalChecked(), HeaderGetter, HeaderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clockIdentifier").ToLocalChecked(), ClockIdentifierGetter, ClockIdentifierSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lightDismissOverlayMode").ToLocalChecked(), LightDismissOverlayModeGetter, LightDismissOverlayModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("clockIdentifierProperty").ToLocalChecked(), ClockIdentifierPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerProperty").ToLocalChecked(), HeaderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerTemplateProperty").ToLocalChecked(), HeaderTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minuteIncrementProperty").ToLocalChecked(), MinuteIncrementPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("timeProperty").ToLocalChecked(), TimePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightDismissOverlayModeProperty").ToLocalChecked(), LightDismissOverlayModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("TimePicker").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      TimePicker(::Windows::UI::Xaml::Controls::TimePicker^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::TimePicker^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::TimePicker^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::TimePicker();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      TimePicker *wrapperInstance = new TimePicker(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::TimePicker^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::TimePicker^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapTimePicker(winRtInstance));
    }





    static void TimeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This())) {
        return;
      }

      TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());

      try  {
        ::Windows::Foundation::TimeSpan result = wrapper->_instance->Time;
        info.GetReturnValue().Set(Nan::New<Number>(result.Duration/10000.0));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TimeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This())) {
        return;
      }

      TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());

      try {

        ::Windows::Foundation::TimeSpan winRtValue = NodeRT::Utils::TimeSpanFromMilli(Nan::To<int64_t>(value).FromMaybe(0));

        wrapper->_instance->Time = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinuteIncrementGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This())) {
        return;
      }

      TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());

      try  {
        int result = wrapper->_instance->MinuteIncrement;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinuteIncrementSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This())) {
        return;
      }

      TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->MinuteIncrement = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This())) {
        return;
      }

      TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->HeaderTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This())) {
        return;
      }

      TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This())) {
        return;
      }

      TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Header;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This())) {
        return;
      }

      TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Header = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClockIdentifierGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This())) {
        return;
      }

      TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->ClockIdentifier;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClockIdentifierSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This())) {
        return;
      }

      TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->ClockIdentifier = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightDismissOverlayModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This())) {
        return;
      }

      TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode result = wrapper->_instance->LightDismissOverlayMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LightDismissOverlayModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This())) {
        return;
      }

      TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::LightDismissOverlayMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->LightDismissOverlayMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ClockIdentifierPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TimePicker::ClockIdentifierProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TimePicker::HeaderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TimePicker::HeaderTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinuteIncrementPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TimePicker::MinuteIncrementProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TimePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TimePicker::TimeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightDismissOverlayModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TimePicker::LightDismissOverlayModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"timeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->TimeChanged::add(
            ref new ::Windows::Foundation::EventHandler<::Windows::UI::Xaml::Controls::TimePickerValueChangedEventArgs^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::TimePickerValueChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapTimePickerValueChangedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"timeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"timeChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->TimeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePicker^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePicker *wrapper = TimePicker::Unwrap<TimePicker>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::TimePicker^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapTimePicker(::Windows::UI::Xaml::Controls::TimePicker^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::TimePicker^ UnwrapTimePicker(Local<Value> value);
  };

  Persistent<FunctionTemplate> TimePicker::s_constructorTemplate;

  v8::Local<v8::Value> WrapTimePicker(::Windows::UI::Xaml::Controls::TimePicker^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(TimePicker::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::TimePicker^ UnwrapTimePicker(Local<Value> value) {
     return TimePicker::Unwrap<TimePicker>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitTimePicker(Local<Object> exports) {
    TimePicker::Init(exports);
  }

  class AppBar : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("AppBar").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "onClosed", OnClosed);
            Nan::SetPrototypeMethod(localRef, "onOpened", OnOpened);
            Nan::SetPrototypeMethod(localRef, "onClosing", OnClosing);
            Nan::SetPrototypeMethod(localRef, "onOpening", OnOpening);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSticky").ToLocalChecked(), IsStickyGetter, IsStickySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isOpen").ToLocalChecked(), IsOpenGetter, IsOpenSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("closedDisplayMode").ToLocalChecked(), ClosedDisplayModeGetter, ClosedDisplayModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("templateSettings").ToLocalChecked(), TemplateSettingsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lightDismissOverlayMode").ToLocalChecked(), LightDismissOverlayModeGetter, LightDismissOverlayModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isOpenProperty").ToLocalChecked(), IsOpenPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isStickyProperty").ToLocalChecked(), IsStickyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("closedDisplayModeProperty").ToLocalChecked(), ClosedDisplayModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightDismissOverlayModeProperty").ToLocalChecked(), LightDismissOverlayModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("AppBar").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      AppBar(::Windows::UI::Xaml::Controls::AppBar^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::AppBar^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::AppBar^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::AppBar();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      AppBar *wrapperInstance = new AppBar(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::AppBar^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::AppBar^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapAppBar(winRtInstance));
    }


    static void OnClosed(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This())) {
        return;
      }

      AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnClosed(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnOpened(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This())) {
        return;
      }

      AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnOpened(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnClosing(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This())) {
        return;
      }

      AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnClosing(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnOpening(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This())) {
        return;
      }

      AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[0]))
      {
        try
        {
          ::Platform::Object^ arg0 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnOpening(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void IsStickyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This())) {
        return;
      }

      AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());

      try  {
        bool result = wrapper->_instance->IsSticky;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsStickySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This())) {
        return;
      }

      AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsSticky = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsOpenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This())) {
        return;
      }

      AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());

      try  {
        bool result = wrapper->_instance->IsOpen;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsOpenSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This())) {
        return;
      }

      AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsOpen = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClosedDisplayModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This())) {
        return;
      }

      AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::AppBarClosedDisplayMode result = wrapper->_instance->ClosedDisplayMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClosedDisplayModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This())) {
        return;
      }

      AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::AppBarClosedDisplayMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::AppBarClosedDisplayMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ClosedDisplayMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateSettingsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This())) {
        return;
      }

      AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::AppBarTemplateSettings^ result = wrapper->_instance->TemplateSettings;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "AppBarTemplateSettings", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LightDismissOverlayModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This())) {
        return;
      }

      AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode result = wrapper->_instance->LightDismissOverlayMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LightDismissOverlayModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This())) {
        return;
      }

      AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::LightDismissOverlayMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->LightDismissOverlayMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsOpenPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AppBar::IsOpenProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsStickyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AppBar::IsStickyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClosedDisplayModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AppBar::ClosedDisplayModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightDismissOverlayModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AppBar::LightDismissOverlayModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"closed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Closed::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"opened", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Opened::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Closing::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"opening", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Opening::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"closed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"opened", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"closing", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"opening", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"closed", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->Closed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"opened", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->Opened::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->Closing::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"opening", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->Opening::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::AppBar^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapAppBar(::Windows::UI::Xaml::Controls::AppBar^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::AppBar^ UnwrapAppBar(Local<Value> value);
  };

  Persistent<FunctionTemplate> AppBar::s_constructorTemplate;

  v8::Local<v8::Value> WrapAppBar(::Windows::UI::Xaml::Controls::AppBar^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(AppBar::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::AppBar^ UnwrapAppBar(Local<Value> value) {
     return AppBar::Unwrap<AppBar>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitAppBar(Local<Object> exports) {
    AppBar::Init(exports);
  }

  class AutoSuggestBox : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("AutoSuggestBox").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("text").ToLocalChecked(), TextGetter, TextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("placeholderText").ToLocalChecked(), PlaceholderTextGetter, PlaceholderTextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxSuggestionListHeight").ToLocalChecked(), MaxSuggestionListHeightGetter, MaxSuggestionListHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSuggestionListOpen").ToLocalChecked(), IsSuggestionListOpenGetter, IsSuggestionListOpenSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("header").ToLocalChecked(), HeaderGetter, HeaderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("autoMaximizeSuggestionArea").ToLocalChecked(), AutoMaximizeSuggestionAreaGetter, AutoMaximizeSuggestionAreaSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("updateTextOnSelect").ToLocalChecked(), UpdateTextOnSelectGetter, UpdateTextOnSelectSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textMemberPath").ToLocalChecked(), TextMemberPathGetter, TextMemberPathSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("textBoxStyle").ToLocalChecked(), TextBoxStyleGetter, TextBoxStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("queryIcon").ToLocalChecked(), QueryIconGetter, QueryIconSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lightDismissOverlayMode").ToLocalChecked(), LightDismissOverlayModeGetter, LightDismissOverlayModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsPanel").ToLocalChecked(), ItemsPanelGetter, ItemsPanelSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsSource").ToLocalChecked(), ItemsSourceGetter, ItemsSourceSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemTemplateSelector").ToLocalChecked(), ItemTemplateSelectorGetter, ItemTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemTemplate").ToLocalChecked(), ItemTemplateGetter, ItemTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerStyleSelector").ToLocalChecked(), ItemContainerStyleSelectorGetter, ItemContainerStyleSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerStyle").ToLocalChecked(), ItemContainerStyleGetter, ItemContainerStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupStyleSelector").ToLocalChecked(), GroupStyleSelectorGetter, GroupStyleSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerTransitions").ToLocalChecked(), ItemContainerTransitionsGetter, ItemContainerTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("displayMemberPath").ToLocalChecked(), DisplayMemberPathGetter, DisplayMemberPathSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerGenerator").ToLocalChecked(), ItemContainerGeneratorGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("items").ToLocalChecked(), ItemsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupStyle").ToLocalChecked(), GroupStyleGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isGrouping").ToLocalChecked(), IsGroupingGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsPanelRoot").ToLocalChecked(), ItemsPanelRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("autoMaximizeSuggestionAreaProperty").ToLocalChecked(), AutoMaximizeSuggestionAreaPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerProperty").ToLocalChecked(), HeaderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isSuggestionListOpenProperty").ToLocalChecked(), IsSuggestionListOpenPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxSuggestionListHeightProperty").ToLocalChecked(), MaxSuggestionListHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("placeholderTextProperty").ToLocalChecked(), PlaceholderTextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textBoxStyleProperty").ToLocalChecked(), TextBoxStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textMemberPathProperty").ToLocalChecked(), TextMemberPathPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textProperty").ToLocalChecked(), TextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("updateTextOnSelectProperty").ToLocalChecked(), UpdateTextOnSelectPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("queryIconProperty").ToLocalChecked(), QueryIconPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightDismissOverlayModeProperty").ToLocalChecked(), LightDismissOverlayModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("displayMemberPathProperty").ToLocalChecked(), DisplayMemberPathPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("groupStyleSelectorProperty").ToLocalChecked(), GroupStyleSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isGroupingProperty").ToLocalChecked(), IsGroupingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerStyleProperty").ToLocalChecked(), ItemContainerStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerStyleSelectorProperty").ToLocalChecked(), ItemContainerStyleSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerTransitionsProperty").ToLocalChecked(), ItemContainerTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemTemplateProperty").ToLocalChecked(), ItemTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemTemplateSelectorProperty").ToLocalChecked(), ItemTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemsPanelProperty").ToLocalChecked(), ItemsPanelPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemsSourceProperty").ToLocalChecked(), ItemsSourcePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("AutoSuggestBox").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      AutoSuggestBox(::Windows::UI::Xaml::Controls::AutoSuggestBox^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::AutoSuggestBox^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::AutoSuggestBox^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::AutoSuggestBox();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      AutoSuggestBox *wrapperInstance = new AutoSuggestBox(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::AutoSuggestBox^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::AutoSuggestBox^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapAutoSuggestBox(winRtInstance));
    }





    static void TextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This())) {
        return;
      }

      AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Text;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This())) {
        return;
      }

      AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Text = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PlaceholderTextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This())) {
        return;
      }

      AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->PlaceholderText;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PlaceholderTextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This())) {
        return;
      }

      AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->PlaceholderText = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxSuggestionListHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This())) {
        return;
      }

      AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());

      try  {
        double result = wrapper->_instance->MaxSuggestionListHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxSuggestionListHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This())) {
        return;
      }

      AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxSuggestionListHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsSuggestionListOpenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This())) {
        return;
      }

      AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());

      try  {
        bool result = wrapper->_instance->IsSuggestionListOpen;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSuggestionListOpenSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This())) {
        return;
      }

      AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsSuggestionListOpen = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This())) {
        return;
      }

      AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Header;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This())) {
        return;
      }

      AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Header = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AutoMaximizeSuggestionAreaGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This())) {
        return;
      }

      AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());

      try  {
        bool result = wrapper->_instance->AutoMaximizeSuggestionArea;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AutoMaximizeSuggestionAreaSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This())) {
        return;
      }

      AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AutoMaximizeSuggestionArea = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UpdateTextOnSelectGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This())) {
        return;
      }

      AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());

      try  {
        bool result = wrapper->_instance->UpdateTextOnSelect;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UpdateTextOnSelectSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This())) {
        return;
      }

      AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UpdateTextOnSelect = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextMemberPathGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This())) {
        return;
      }

      AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->TextMemberPath;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextMemberPathSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This())) {
        return;
      }

      AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->TextMemberPath = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextBoxStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This())) {
        return;
      }

      AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->TextBoxStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextBoxStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This())) {
        return;
      }

      AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->TextBoxStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void QueryIconGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This())) {
        return;
      }

      AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::IconElement^ result = wrapper->_instance->QueryIcon;
        info.GetReturnValue().Set(WrapIconElement(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void QueryIconSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This())) {
        return;
      }

      AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::IconElement^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::IconElement^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->QueryIcon = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightDismissOverlayModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This())) {
        return;
      }

      AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode result = wrapper->_instance->LightDismissOverlayMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LightDismissOverlayModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This())) {
        return;
      }

      AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::LightDismissOverlayMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->LightDismissOverlayMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemsPanelGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ result = wrapper->_instance->ItemsPanel;
        info.GetReturnValue().Set(WrapItemsPanelTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsPanelSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemsPanel = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemsSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->ItemsSource;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsSourceSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemsSource = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ItemTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ItemTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerStyleSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::StyleSelector^ result = wrapper->_instance->ItemContainerStyleSelector;
        info.GetReturnValue().Set(WrapStyleSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerStyleSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StyleSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::StyleSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::StyleSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerStyleSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->ItemContainerStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void GroupStyleSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::GroupStyleSelector^ result = wrapper->_instance->GroupStyleSelector;
        info.GetReturnValue().Set(WrapGroupStyleSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupStyleSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::GroupStyleSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->GroupStyleSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ItemContainerTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DisplayMemberPathGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->DisplayMemberPath;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DisplayMemberPathSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->DisplayMemberPath = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerGeneratorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemContainerGenerator^ result = wrapper->_instance->ItemContainerGenerator;
        info.GetReturnValue().Set(WrapItemContainerGenerator(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemCollection^ result = wrapper->_instance->Items;
        info.GetReturnValue().Set(WrapItemCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::Foundation::Collections::IObservableVector<::Windows::UI::Xaml::Controls::GroupStyle^>^ result = wrapper->_instance->GroupStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "IObservableVector`1", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsGroupingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        bool result = wrapper->_instance->IsGrouping;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsPanelRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Panel^ result = wrapper->_instance->ItemsPanelRoot;
        info.GetReturnValue().Set(WrapPanel(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void AutoMaximizeSuggestionAreaPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AutoSuggestBox::AutoMaximizeSuggestionAreaProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AutoSuggestBox::HeaderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsSuggestionListOpenPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AutoSuggestBox::IsSuggestionListOpenProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxSuggestionListHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AutoSuggestBox::MaxSuggestionListHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PlaceholderTextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AutoSuggestBox::PlaceholderTextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextBoxStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AutoSuggestBox::TextBoxStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextMemberPathPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AutoSuggestBox::TextMemberPathProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AutoSuggestBox::TextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UpdateTextOnSelectPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AutoSuggestBox::UpdateTextOnSelectProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void QueryIconPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AutoSuggestBox::QueryIconProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightDismissOverlayModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AutoSuggestBox::LightDismissOverlayModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DisplayMemberPathPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::DisplayMemberPathProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GroupStyleSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::GroupStyleSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsGroupingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::IsGroupingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerStyleSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerStyleSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemsPanelPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemsPanelProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemsSourcePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemsSourceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"suggestionChosen", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SuggestionChosen::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::AutoSuggestBox^, ::Windows::UI::Xaml::Controls::AutoSuggestBoxSuggestionChosenEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::AutoSuggestBox^ arg0, ::Windows::UI::Xaml::Controls::AutoSuggestBoxSuggestionChosenEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapAutoSuggestBox(arg0);
                  wrappedArg1 = WrapAutoSuggestBoxSuggestionChosenEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"textChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->TextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::AutoSuggestBox^, ::Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::AutoSuggestBox^ arg0, ::Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapAutoSuggestBox(arg0);
                  wrappedArg1 = WrapAutoSuggestBoxTextChangedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"querySubmitted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->QuerySubmitted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::AutoSuggestBox^, ::Windows::UI::Xaml::Controls::AutoSuggestBoxQuerySubmittedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::AutoSuggestBox^ arg0, ::Windows::UI::Xaml::Controls::AutoSuggestBoxQuerySubmittedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapAutoSuggestBox(arg0);
                  wrappedArg1 = WrapAutoSuggestBoxQuerySubmittedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"suggestionChosen", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"textChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"querySubmitted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"suggestionChosen", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->SuggestionChosen::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"textChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->TextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"querySubmitted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->QuerySubmitted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AutoSuggestBox^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AutoSuggestBox *wrapper = AutoSuggestBox::Unwrap<AutoSuggestBox>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::AutoSuggestBox^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapAutoSuggestBox(::Windows::UI::Xaml::Controls::AutoSuggestBox^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::AutoSuggestBox^ UnwrapAutoSuggestBox(Local<Value> value);
  };

  Persistent<FunctionTemplate> AutoSuggestBox::s_constructorTemplate;

  v8::Local<v8::Value> WrapAutoSuggestBox(::Windows::UI::Xaml::Controls::AutoSuggestBox^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(AutoSuggestBox::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::AutoSuggestBox^ UnwrapAutoSuggestBox(Local<Value> value) {
     return AutoSuggestBox::Unwrap<AutoSuggestBox>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitAutoSuggestBox(Local<Object> exports) {
    AutoSuggestBox::Init(exports);
  }

  class CommandBarOverflowPresenter : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("CommandBarOverflowPresenter").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsPanel").ToLocalChecked(), ItemsPanelGetter, ItemsPanelSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsSource").ToLocalChecked(), ItemsSourceGetter, ItemsSourceSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemTemplateSelector").ToLocalChecked(), ItemTemplateSelectorGetter, ItemTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemTemplate").ToLocalChecked(), ItemTemplateGetter, ItemTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerStyleSelector").ToLocalChecked(), ItemContainerStyleSelectorGetter, ItemContainerStyleSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerStyle").ToLocalChecked(), ItemContainerStyleGetter, ItemContainerStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupStyleSelector").ToLocalChecked(), GroupStyleSelectorGetter, GroupStyleSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerTransitions").ToLocalChecked(), ItemContainerTransitionsGetter, ItemContainerTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("displayMemberPath").ToLocalChecked(), DisplayMemberPathGetter, DisplayMemberPathSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerGenerator").ToLocalChecked(), ItemContainerGeneratorGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("items").ToLocalChecked(), ItemsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupStyle").ToLocalChecked(), GroupStyleGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isGrouping").ToLocalChecked(), IsGroupingGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsPanelRoot").ToLocalChecked(), ItemsPanelRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("displayMemberPathProperty").ToLocalChecked(), DisplayMemberPathPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("groupStyleSelectorProperty").ToLocalChecked(), GroupStyleSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isGroupingProperty").ToLocalChecked(), IsGroupingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerStyleProperty").ToLocalChecked(), ItemContainerStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerStyleSelectorProperty").ToLocalChecked(), ItemContainerStyleSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerTransitionsProperty").ToLocalChecked(), ItemContainerTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemTemplateProperty").ToLocalChecked(), ItemTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemTemplateSelectorProperty").ToLocalChecked(), ItemTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemsPanelProperty").ToLocalChecked(), ItemsPanelPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemsSourceProperty").ToLocalChecked(), ItemsSourcePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("CommandBarOverflowPresenter").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      CommandBarOverflowPresenter(::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      CommandBarOverflowPresenter *wrapperInstance = new CommandBarOverflowPresenter(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapCommandBarOverflowPresenter(winRtInstance));
    }





    static void ItemsPanelGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ result = wrapper->_instance->ItemsPanel;
        info.GetReturnValue().Set(WrapItemsPanelTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsPanelSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemsPanel = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemsSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->ItemsSource;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsSourceSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemsSource = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ItemTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ItemTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerStyleSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::StyleSelector^ result = wrapper->_instance->ItemContainerStyleSelector;
        info.GetReturnValue().Set(WrapStyleSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerStyleSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StyleSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::StyleSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::StyleSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerStyleSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->ItemContainerStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void GroupStyleSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::GroupStyleSelector^ result = wrapper->_instance->GroupStyleSelector;
        info.GetReturnValue().Set(WrapGroupStyleSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupStyleSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::GroupStyleSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->GroupStyleSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ItemContainerTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DisplayMemberPathGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->DisplayMemberPath;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DisplayMemberPathSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->DisplayMemberPath = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerGeneratorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemContainerGenerator^ result = wrapper->_instance->ItemContainerGenerator;
        info.GetReturnValue().Set(WrapItemContainerGenerator(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemCollection^ result = wrapper->_instance->Items;
        info.GetReturnValue().Set(WrapItemCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::Foundation::Collections::IObservableVector<::Windows::UI::Xaml::Controls::GroupStyle^>^ result = wrapper->_instance->GroupStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "IObservableVector`1", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsGroupingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        bool result = wrapper->_instance->IsGrouping;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsPanelRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Panel^ result = wrapper->_instance->ItemsPanelRoot;
        info.GetReturnValue().Set(WrapPanel(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void DisplayMemberPathPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::DisplayMemberPathProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GroupStyleSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::GroupStyleSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsGroupingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::IsGroupingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerStyleSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerStyleSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemsPanelPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemsPanelProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemsSourcePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemsSourceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBarOverflowPresenter *wrapper = CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapCommandBarOverflowPresenter(::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^ UnwrapCommandBarOverflowPresenter(Local<Value> value);
  };

  Persistent<FunctionTemplate> CommandBarOverflowPresenter::s_constructorTemplate;

  v8::Local<v8::Value> WrapCommandBarOverflowPresenter(::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(CommandBarOverflowPresenter::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::CommandBarOverflowPresenter^ UnwrapCommandBarOverflowPresenter(Local<Value> value) {
     return CommandBarOverflowPresenter::Unwrap<CommandBarOverflowPresenter>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitCommandBarOverflowPresenter(Local<Object> exports) {
    CommandBarOverflowPresenter::Init(exports);
  }

  class ContentDialog : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ContentDialog").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);

        Local<Function> func;
        Local<FunctionTemplate> funcTemplate;

          
            Nan::SetPrototypeMethod(localRef, "hide", Hide);
          

          
            Nan::SetPrototypeMethod(localRef, "showAsync", ShowAsync);
          

          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("secondaryButtonText").ToLocalChecked(), SecondaryButtonTextGetter, SecondaryButtonTextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("title").ToLocalChecked(), TitleGetter, TitleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("secondaryButtonCommand").ToLocalChecked(), SecondaryButtonCommandGetter, SecondaryButtonCommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("primaryButtonText").ToLocalChecked(), PrimaryButtonTextGetter, PrimaryButtonTextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fullSizeDesired").ToLocalChecked(), FullSizeDesiredGetter, FullSizeDesiredSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("primaryButtonCommand").ToLocalChecked(), PrimaryButtonCommandGetter, PrimaryButtonCommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("secondaryButtonCommandParameter").ToLocalChecked(), SecondaryButtonCommandParameterGetter, SecondaryButtonCommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPrimaryButtonEnabled").ToLocalChecked(), IsPrimaryButtonEnabledGetter, IsPrimaryButtonEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("primaryButtonCommandParameter").ToLocalChecked(), PrimaryButtonCommandParameterGetter, PrimaryButtonCommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSecondaryButtonEnabled").ToLocalChecked(), IsSecondaryButtonEnabledGetter, IsSecondaryButtonEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("titleTemplate").ToLocalChecked(), TitleTemplateGetter, TitleTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("closeButtonStyle").ToLocalChecked(), CloseButtonStyleGetter, CloseButtonStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("primaryButtonStyle").ToLocalChecked(), PrimaryButtonStyleGetter, PrimaryButtonStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultButton").ToLocalChecked(), DefaultButtonGetter, DefaultButtonSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("closeButtonText").ToLocalChecked(), CloseButtonTextGetter, CloseButtonTextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("secondaryButtonStyle").ToLocalChecked(), SecondaryButtonStyleGetter, SecondaryButtonStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("closeButtonCommandParameter").ToLocalChecked(), CloseButtonCommandParameterGetter, CloseButtonCommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("closeButtonCommand").ToLocalChecked(), CloseButtonCommandGetter, CloseButtonCommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("secondaryButtonCommandParameterProperty").ToLocalChecked(), SecondaryButtonCommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fullSizeDesiredProperty").ToLocalChecked(), FullSizeDesiredPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPrimaryButtonEnabledProperty").ToLocalChecked(), IsPrimaryButtonEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isSecondaryButtonEnabledProperty").ToLocalChecked(), IsSecondaryButtonEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("primaryButtonCommandParameterProperty").ToLocalChecked(), PrimaryButtonCommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("primaryButtonCommandProperty").ToLocalChecked(), PrimaryButtonCommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("primaryButtonTextProperty").ToLocalChecked(), PrimaryButtonTextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("secondaryButtonCommandProperty").ToLocalChecked(), SecondaryButtonCommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("secondaryButtonTextProperty").ToLocalChecked(), SecondaryButtonTextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("titleProperty").ToLocalChecked(), TitlePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("titleTemplateProperty").ToLocalChecked(), TitleTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("closeButtonCommandParameterProperty").ToLocalChecked(), CloseButtonCommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("closeButtonCommandProperty").ToLocalChecked(), CloseButtonCommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("closeButtonStyleProperty").ToLocalChecked(), CloseButtonStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("closeButtonTextProperty").ToLocalChecked(), CloseButtonTextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultButtonProperty").ToLocalChecked(), DefaultButtonPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("primaryButtonStyleProperty").ToLocalChecked(), PrimaryButtonStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("secondaryButtonStyleProperty").ToLocalChecked(), SecondaryButtonStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ContentDialog").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ContentDialog(::Windows::UI::Xaml::Controls::ContentDialog^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ContentDialog^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ContentDialog^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ContentDialog();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ContentDialog *wrapperInstance = new ContentDialog(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ContentDialog^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ContentDialog^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapContentDialog(winRtInstance));
    }

    static void ShowAsync(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      if (info.Length() == 0 || !info[info.Length() -1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: No callback was given")));
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      ::Windows::Foundation::IAsyncOperation<::Windows::UI::Xaml::Controls::ContentDialogResult>^ op;


      if (info.Length() == 1)
      {
        try
        {
          op = wrapper->_instance->ShowAsync();
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }

      auto opTask = create_task(op);
      uv_async_t* asyncToken = NodeUtils::Async::GetAsyncToken(info[info.Length() -1].As<Function>());

      opTask.then( [asyncToken] (task<::Windows::UI::Xaml::Controls::ContentDialogResult> t) {
        try {
          auto result = t.get();
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [result](NodeUtils::InvokeCallbackDelegate invokeCallback) {


            Local<Value> error;
            Local<Value> arg1;
            {
              TryCatch tryCatch;
              arg1 = Nan::New<Integer>(static_cast<int>(result));
              if (tryCatch.HasCaught())
              {
                error = Nan::To<Object>(tryCatch.Exception()).ToLocalChecked();
              }
              else
              {
                error = Undefined();
              }
              if (arg1.IsEmpty()) arg1 = Undefined();
            }
            Local<Value> args[] = {error, arg1};


            invokeCallback(_countof(args), args);
          });
        } catch (Platform::Exception^ exception) {
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [exception](NodeUtils::InvokeCallbackDelegate invokeCallback) {
            Local<Value> error = NodeRT::Utils::WinRtExceptionToJsError(exception);

            Local<Value> args[] = {error};
            invokeCallback(_countof(args), args);
          });
        }
      });
    }

    static void Hide(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->Hide();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void SecondaryButtonTextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->SecondaryButtonText;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SecondaryButtonTextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->SecondaryButtonText = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TitleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Title;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TitleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Title = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SecondaryButtonCommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->SecondaryButtonCommand;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SecondaryButtonCommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SecondaryButtonCommand = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PrimaryButtonTextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->PrimaryButtonText;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PrimaryButtonTextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->PrimaryButtonText = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FullSizeDesiredGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try  {
        bool result = wrapper->_instance->FullSizeDesired;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FullSizeDesiredSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->FullSizeDesired = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PrimaryButtonCommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->PrimaryButtonCommand;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PrimaryButtonCommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->PrimaryButtonCommand = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SecondaryButtonCommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->SecondaryButtonCommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SecondaryButtonCommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SecondaryButtonCommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPrimaryButtonEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try  {
        bool result = wrapper->_instance->IsPrimaryButtonEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPrimaryButtonEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsPrimaryButtonEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PrimaryButtonCommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->PrimaryButtonCommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PrimaryButtonCommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->PrimaryButtonCommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsSecondaryButtonEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try  {
        bool result = wrapper->_instance->IsSecondaryButtonEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSecondaryButtonEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsSecondaryButtonEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TitleTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->TitleTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TitleTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->TitleTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CloseButtonStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->CloseButtonStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CloseButtonStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CloseButtonStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PrimaryButtonStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->PrimaryButtonStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PrimaryButtonStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->PrimaryButtonStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultButtonGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ContentDialogButton result = wrapper->_instance->DefaultButton;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultButtonSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ContentDialogButton winRtValue = static_cast<::Windows::UI::Xaml::Controls::ContentDialogButton>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->DefaultButton = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CloseButtonTextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->CloseButtonText;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CloseButtonTextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->CloseButtonText = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SecondaryButtonStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->SecondaryButtonStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SecondaryButtonStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SecondaryButtonStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CloseButtonCommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->CloseButtonCommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CloseButtonCommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CloseButtonCommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CloseButtonCommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->CloseButtonCommand;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CloseButtonCommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This())) {
        return;
      }

      ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CloseButtonCommand = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void SecondaryButtonCommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentDialog::SecondaryButtonCommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FullSizeDesiredPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentDialog::FullSizeDesiredProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPrimaryButtonEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentDialog::IsPrimaryButtonEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsSecondaryButtonEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentDialog::IsSecondaryButtonEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PrimaryButtonCommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentDialog::PrimaryButtonCommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PrimaryButtonCommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentDialog::PrimaryButtonCommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PrimaryButtonTextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentDialog::PrimaryButtonTextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SecondaryButtonCommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentDialog::SecondaryButtonCommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SecondaryButtonTextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentDialog::SecondaryButtonTextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TitlePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentDialog::TitleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TitleTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentDialog::TitleTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CloseButtonCommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentDialog::CloseButtonCommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CloseButtonCommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentDialog::CloseButtonCommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CloseButtonStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentDialog::CloseButtonStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CloseButtonTextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentDialog::CloseButtonTextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultButtonPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentDialog::DefaultButtonProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PrimaryButtonStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentDialog::PrimaryButtonStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SecondaryButtonStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentDialog::SecondaryButtonStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"closed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Closed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ContentDialog^, ::Windows::UI::Xaml::Controls::ContentDialogClosedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::ContentDialog^ arg0, ::Windows::UI::Xaml::Controls::ContentDialogClosedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapContentDialog(arg0);
                  wrappedArg1 = WrapContentDialogClosedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Closing::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ContentDialog^, ::Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::ContentDialog^ arg0, ::Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapContentDialog(arg0);
                  wrappedArg1 = WrapContentDialogClosingEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"opened", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Opened::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ContentDialog^, ::Windows::UI::Xaml::Controls::ContentDialogOpenedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::ContentDialog^ arg0, ::Windows::UI::Xaml::Controls::ContentDialogOpenedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapContentDialog(arg0);
                  wrappedArg1 = WrapContentDialogOpenedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"primaryButtonClick", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PrimaryButtonClick::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ContentDialog^, ::Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::ContentDialog^ arg0, ::Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapContentDialog(arg0);
                  wrappedArg1 = WrapContentDialogButtonClickEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"secondaryButtonClick", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SecondaryButtonClick::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ContentDialog^, ::Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::ContentDialog^ arg0, ::Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapContentDialog(arg0);
                  wrappedArg1 = WrapContentDialogButtonClickEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"closeButtonClick", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->CloseButtonClick::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ContentDialog^, ::Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::ContentDialog^ arg0, ::Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapContentDialog(arg0);
                  wrappedArg1 = WrapContentDialogButtonClickEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"closed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"closing", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"opened", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"primaryButtonClick", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"secondaryButtonClick", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"closeButtonClick", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"closed", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->Closed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->Closing::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"opened", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->Opened::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"primaryButtonClick", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->PrimaryButtonClick::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"secondaryButtonClick", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->SecondaryButtonClick::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"closeButtonClick", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->CloseButtonClick::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentDialog^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ContentDialog *wrapper = ContentDialog::Unwrap<ContentDialog>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ContentDialog^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapContentDialog(::Windows::UI::Xaml::Controls::ContentDialog^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ContentDialog^ UnwrapContentDialog(Local<Value> value);
  };

  Persistent<FunctionTemplate> ContentDialog::s_constructorTemplate;

  v8::Local<v8::Value> WrapContentDialog(::Windows::UI::Xaml::Controls::ContentDialog^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ContentDialog::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ContentDialog^ UnwrapContentDialog(Local<Value> value) {
     return ContentDialog::Unwrap<ContentDialog>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitContentDialog(Local<Object> exports) {
    ContentDialog::Init(exports);
  }

  class FlyoutPresenter : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("FlyoutPresenter").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("FlyoutPresenter").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      FlyoutPresenter(::Windows::UI::Xaml::Controls::FlyoutPresenter^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::FlyoutPresenter^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::FlyoutPresenter^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::FlyoutPresenter();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      FlyoutPresenter *wrapperInstance = new FlyoutPresenter(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::FlyoutPresenter^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::FlyoutPresenter^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapFlyoutPresenter(winRtInstance));
    }





    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::FlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          FlyoutPresenter *wrapper = FlyoutPresenter::Unwrap<FlyoutPresenter>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::FlyoutPresenter^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapFlyoutPresenter(::Windows::UI::Xaml::Controls::FlyoutPresenter^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::FlyoutPresenter^ UnwrapFlyoutPresenter(Local<Value> value);
  };

  Persistent<FunctionTemplate> FlyoutPresenter::s_constructorTemplate;

  v8::Local<v8::Value> WrapFlyoutPresenter(::Windows::UI::Xaml::Controls::FlyoutPresenter^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(FlyoutPresenter::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::FlyoutPresenter^ UnwrapFlyoutPresenter(Local<Value> value) {
     return FlyoutPresenter::Unwrap<FlyoutPresenter>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitFlyoutPresenter(Local<Object> exports) {
    FlyoutPresenter::Init(exports);
  }

  class Frame : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("Frame").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "goBack", GoBack);
            Nan::SetPrototypeMethod(localRef, "goForward", GoForward);
            Nan::SetPrototypeMethod(localRef, "navigate", Navigate);
            Nan::SetPrototypeMethod(localRef, "getNavigationState", GetNavigationState);
            Nan::SetPrototypeMethod(localRef, "setNavigationState", SetNavigationState);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("sourcePageType").ToLocalChecked(), SourcePageTypeGetter, SourcePageTypeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheSize").ToLocalChecked(), CacheSizeGetter, CacheSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("backStackDepth").ToLocalChecked(), BackStackDepthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canGoBack").ToLocalChecked(), CanGoBackGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canGoForward").ToLocalChecked(), CanGoForwardGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("currentSourcePageType").ToLocalChecked(), CurrentSourcePageTypeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("backStack").ToLocalChecked(), BackStackGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("forwardStack").ToLocalChecked(), ForwardStackGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("backStackDepthProperty").ToLocalChecked(), BackStackDepthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheSizeProperty").ToLocalChecked(), CacheSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canGoBackProperty").ToLocalChecked(), CanGoBackPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canGoForwardProperty").ToLocalChecked(), CanGoForwardPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("currentSourcePageTypeProperty").ToLocalChecked(), CurrentSourcePageTypePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("sourcePageTypeProperty").ToLocalChecked(), SourcePageTypePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backStackProperty").ToLocalChecked(), BackStackPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("forwardStackProperty").ToLocalChecked(), ForwardStackPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("Frame").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      Frame(::Windows::UI::Xaml::Controls::Frame^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::Frame^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::Frame^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::Frame();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      Frame *wrapperInstance = new Frame(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::Frame^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::Frame^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapFrame(winRtInstance));
    }


    static void GoBack(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This())) {
        return;
      }

      Frame *wrapper = Frame::Unwrap<Frame>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->GoBack();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::NavigationTransitionInfo^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Media::Animation::NavigationTransitionInfo^ arg0 = dynamic_cast<::Windows::UI::Xaml::Media::Animation::NavigationTransitionInfo^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->GoBack(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GoForward(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This())) {
        return;
      }

      Frame *wrapper = Frame::Unwrap<Frame>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->GoForward();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void Navigate(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This())) {
        return;
      }

      Frame *wrapper = Frame::Unwrap<Frame>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Type^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1]))
      {
        try
        {
          ::Platform::Type^ arg0 = dynamic_cast<::Platform::Type^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          bool result;
          result = wrapper->_instance->Navigate(arg0, arg1);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Type^>(info[0]))
      {
        try
        {
          ::Platform::Type^ arg0 = dynamic_cast<::Platform::Type^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          bool result;
          result = wrapper->_instance->Navigate(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 3
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Type^>(info[0])
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(info[1])
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::NavigationTransitionInfo^>(info[2]))
      {
        try
        {
          ::Platform::Type^ arg0 = dynamic_cast<::Platform::Type^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Platform::Object^ arg1 = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(info[1]));
          ::Windows::UI::Xaml::Media::Animation::NavigationTransitionInfo^ arg2 = dynamic_cast<::Windows::UI::Xaml::Media::Animation::NavigationTransitionInfo^>(NodeRT::Utils::GetObjectInstance(info[2]));
          
          bool result;
          result = wrapper->_instance->Navigate(arg0, arg1, arg2);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetNavigationState(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This())) {
        return;
      }

      Frame *wrapper = Frame::Unwrap<Frame>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          Platform::String^ result;
          result = wrapper->_instance->GetNavigationState();
          info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void SetNavigationState(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This())) {
        return;
      }

      Frame *wrapper = Frame::Unwrap<Frame>(info.This());

      if (info.Length() == 1
        && info[0]->IsString())
      {
        try
        {
          Platform::String^ arg0 = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), info[0])));
          
          wrapper->_instance->SetNavigationState(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 2
        && info[0]->IsString()
        && info[1]->IsBoolean())
      {
        try
        {
          Platform::String^ arg0 = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), info[0])));
          bool arg1 = Nan::To<bool>(info[1]).FromMaybe(false);
          
          wrapper->_instance->SetNavigationState(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void SourcePageTypeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This())) {
        return;
      }

      Frame *wrapper = Frame::Unwrap<Frame>(info.This());

      try  {
        ::Platform::Type^ result = wrapper->_instance->SourcePageType;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System", "Type", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SourcePageTypeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Type^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This())) {
        return;
      }

      Frame *wrapper = Frame::Unwrap<Frame>(info.This());

      try {

        ::Platform::Type^ winRtValue = dynamic_cast<::Platform::Type^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SourcePageType = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This())) {
        return;
      }

      Frame *wrapper = Frame::Unwrap<Frame>(info.This());

      try  {
        int result = wrapper->_instance->CacheSize;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This())) {
        return;
      }

      Frame *wrapper = Frame::Unwrap<Frame>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CacheSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackStackDepthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This())) {
        return;
      }

      Frame *wrapper = Frame::Unwrap<Frame>(info.This());

      try  {
        int result = wrapper->_instance->BackStackDepth;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanGoBackGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This())) {
        return;
      }

      Frame *wrapper = Frame::Unwrap<Frame>(info.This());

      try  {
        bool result = wrapper->_instance->CanGoBack;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanGoForwardGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This())) {
        return;
      }

      Frame *wrapper = Frame::Unwrap<Frame>(info.This());

      try  {
        bool result = wrapper->_instance->CanGoForward;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CurrentSourcePageTypeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This())) {
        return;
      }

      Frame *wrapper = Frame::Unwrap<Frame>(info.This());

      try  {
        ::Platform::Type^ result = wrapper->_instance->CurrentSourcePageType;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System", "Type", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackStackGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This())) {
        return;
      }

      Frame *wrapper = Frame::Unwrap<Frame>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Navigation::PageStackEntry^>^ result = wrapper->_instance->BackStack;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Navigation::PageStackEntry^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Navigation::PageStackEntry^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Navigation", "PageStackEntry", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Navigation::PageStackEntry^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Navigation::PageStackEntry^ {
              return dynamic_cast<::Windows::UI::Xaml::Navigation::PageStackEntry^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForwardStackGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This())) {
        return;
      }

      Frame *wrapper = Frame::Unwrap<Frame>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Navigation::PageStackEntry^>^ result = wrapper->_instance->ForwardStack;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Navigation::PageStackEntry^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Navigation::PageStackEntry^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Navigation", "PageStackEntry", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Navigation::PageStackEntry^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Navigation::PageStackEntry^ {
              return dynamic_cast<::Windows::UI::Xaml::Navigation::PageStackEntry^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void BackStackDepthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Frame::BackStackDepthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Frame::CacheSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanGoBackPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Frame::CanGoBackProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanGoForwardPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Frame::CanGoForwardProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CurrentSourcePageTypePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Frame::CurrentSourcePageTypeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SourcePageTypePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Frame::SourcePageTypeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackStackPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Frame::BackStackProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForwardStackPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Frame::ForwardStackProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"navigated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Navigated::add(
            ref new ::Windows::UI::Xaml::Navigation::NavigatedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Navigation::NavigationEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Navigation", "NavigationEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"navigating", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Navigating::add(
            ref new ::Windows::UI::Xaml::Navigation::NavigatingCancelEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Navigation::NavigatingCancelEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Navigation", "NavigatingCancelEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"navigationFailed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NavigationFailed::add(
            ref new ::Windows::UI::Xaml::Navigation::NavigationFailedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Navigation::NavigationFailedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Navigation", "NavigationFailedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"navigationStopped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NavigationStopped::add(
            ref new ::Windows::UI::Xaml::Navigation::NavigationStoppedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Navigation::NavigationEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Navigation", "NavigationEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Frame *wrapper = Frame::Unwrap<Frame>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"navigated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"navigating", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"navigationFailed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"navigationStopped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"navigated", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->Navigated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"navigating", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->Navigating::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"navigationFailed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->NavigationFailed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"navigationStopped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->NavigationStopped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Frame^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Frame *wrapper = Frame::Unwrap<Frame>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::Frame^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapFrame(::Windows::UI::Xaml::Controls::Frame^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::Frame^ UnwrapFrame(Local<Value> value);
  };

  Persistent<FunctionTemplate> Frame::s_constructorTemplate;

  v8::Local<v8::Value> WrapFrame(::Windows::UI::Xaml::Controls::Frame^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(Frame::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::Frame^ UnwrapFrame(Local<Value> value) {
     return Frame::Unwrap<Frame>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitFrame(Local<Object> exports) {
    Frame::Init(exports);
  }

  class MenuFlyoutItem : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("MenuFlyoutItem").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("text").ToLocalChecked(), TextGetter, TextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandParameter").ToLocalChecked(), CommandParameterGetter, CommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("command").ToLocalChecked(), CommandGetter, CommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("icon").ToLocalChecked(), IconGetter, IconSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("commandParameterProperty").ToLocalChecked(), CommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandProperty").ToLocalChecked(), CommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textProperty").ToLocalChecked(), TextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("iconProperty").ToLocalChecked(), IconPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("MenuFlyoutItem").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      MenuFlyoutItem(::Windows::UI::Xaml::Controls::MenuFlyoutItem^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::MenuFlyoutItem^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::MenuFlyoutItem^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::MenuFlyoutItem();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      MenuFlyoutItem *wrapperInstance = new MenuFlyoutItem(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::MenuFlyoutItem^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::MenuFlyoutItem^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapMenuFlyoutItem(winRtInstance));
    }





    static void TextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This())) {
        return;
      }

      MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Text;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This())) {
        return;
      }

      MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Text = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This())) {
        return;
      }

      MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->CommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This())) {
        return;
      }

      MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This())) {
        return;
      }

      MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->Command;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This())) {
        return;
      }

      MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Command = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IconGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This())) {
        return;
      }

      MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::IconElement^ result = wrapper->_instance->Icon;
        info.GetReturnValue().Set(WrapIconElement(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IconSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This())) {
        return;
      }

      MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::IconElement^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::IconElement^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Icon = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void CommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MenuFlyoutItem::CommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MenuFlyoutItem::CommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MenuFlyoutItem::TextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IconPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MenuFlyoutItem::IconProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Click::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->Click::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::MenuFlyoutItem^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapMenuFlyoutItem(::Windows::UI::Xaml::Controls::MenuFlyoutItem^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::MenuFlyoutItem^ UnwrapMenuFlyoutItem(Local<Value> value);
  };

  Persistent<FunctionTemplate> MenuFlyoutItem::s_constructorTemplate;

  v8::Local<v8::Value> WrapMenuFlyoutItem(::Windows::UI::Xaml::Controls::MenuFlyoutItem^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(MenuFlyoutItem::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::MenuFlyoutItem^ UnwrapMenuFlyoutItem(Local<Value> value) {
     return MenuFlyoutItem::Unwrap<MenuFlyoutItem>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitMenuFlyoutItem(Local<Object> exports) {
    MenuFlyoutItem::Init(exports);
  }

  class MenuFlyoutPresenter : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("MenuFlyoutPresenter").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("templateSettings").ToLocalChecked(), TemplateSettingsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsPanel").ToLocalChecked(), ItemsPanelGetter, ItemsPanelSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsSource").ToLocalChecked(), ItemsSourceGetter, ItemsSourceSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemTemplateSelector").ToLocalChecked(), ItemTemplateSelectorGetter, ItemTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemTemplate").ToLocalChecked(), ItemTemplateGetter, ItemTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerStyleSelector").ToLocalChecked(), ItemContainerStyleSelectorGetter, ItemContainerStyleSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerStyle").ToLocalChecked(), ItemContainerStyleGetter, ItemContainerStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupStyleSelector").ToLocalChecked(), GroupStyleSelectorGetter, GroupStyleSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerTransitions").ToLocalChecked(), ItemContainerTransitionsGetter, ItemContainerTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("displayMemberPath").ToLocalChecked(), DisplayMemberPathGetter, DisplayMemberPathSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerGenerator").ToLocalChecked(), ItemContainerGeneratorGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("items").ToLocalChecked(), ItemsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupStyle").ToLocalChecked(), GroupStyleGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isGrouping").ToLocalChecked(), IsGroupingGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsPanelRoot").ToLocalChecked(), ItemsPanelRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("displayMemberPathProperty").ToLocalChecked(), DisplayMemberPathPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("groupStyleSelectorProperty").ToLocalChecked(), GroupStyleSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isGroupingProperty").ToLocalChecked(), IsGroupingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerStyleProperty").ToLocalChecked(), ItemContainerStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerStyleSelectorProperty").ToLocalChecked(), ItemContainerStyleSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerTransitionsProperty").ToLocalChecked(), ItemContainerTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemTemplateProperty").ToLocalChecked(), ItemTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemTemplateSelectorProperty").ToLocalChecked(), ItemTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemsPanelProperty").ToLocalChecked(), ItemsPanelPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemsSourceProperty").ToLocalChecked(), ItemsSourcePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("MenuFlyoutPresenter").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      MenuFlyoutPresenter(::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::MenuFlyoutPresenter();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      MenuFlyoutPresenter *wrapperInstance = new MenuFlyoutPresenter(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapMenuFlyoutPresenter(winRtInstance));
    }





    static void TemplateSettingsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This())) {
        return;
      }

      MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::MenuFlyoutPresenterTemplateSettings^ result = wrapper->_instance->TemplateSettings;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "MenuFlyoutPresenterTemplateSettings", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsPanelGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ result = wrapper->_instance->ItemsPanel;
        info.GetReturnValue().Set(WrapItemsPanelTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsPanelSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemsPanel = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemsSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->ItemsSource;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsSourceSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemsSource = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ItemTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ItemTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerStyleSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::StyleSelector^ result = wrapper->_instance->ItemContainerStyleSelector;
        info.GetReturnValue().Set(WrapStyleSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerStyleSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StyleSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::StyleSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::StyleSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerStyleSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->ItemContainerStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void GroupStyleSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::GroupStyleSelector^ result = wrapper->_instance->GroupStyleSelector;
        info.GetReturnValue().Set(WrapGroupStyleSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupStyleSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::GroupStyleSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->GroupStyleSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ItemContainerTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DisplayMemberPathGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->DisplayMemberPath;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DisplayMemberPathSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->DisplayMemberPath = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerGeneratorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemContainerGenerator^ result = wrapper->_instance->ItemContainerGenerator;
        info.GetReturnValue().Set(WrapItemContainerGenerator(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemCollection^ result = wrapper->_instance->Items;
        info.GetReturnValue().Set(WrapItemCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::Foundation::Collections::IObservableVector<::Windows::UI::Xaml::Controls::GroupStyle^>^ result = wrapper->_instance->GroupStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "IObservableVector`1", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsGroupingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        bool result = wrapper->_instance->IsGrouping;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsPanelRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Panel^ result = wrapper->_instance->ItemsPanelRoot;
        info.GetReturnValue().Set(WrapPanel(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void DisplayMemberPathPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::DisplayMemberPathProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GroupStyleSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::GroupStyleSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsGroupingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::IsGroupingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerStyleSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerStyleSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemsPanelPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemsPanelProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemsSourcePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemsSourceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutPresenter *wrapper = MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapMenuFlyoutPresenter(::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^ UnwrapMenuFlyoutPresenter(Local<Value> value);
  };

  Persistent<FunctionTemplate> MenuFlyoutPresenter::s_constructorTemplate;

  v8::Local<v8::Value> WrapMenuFlyoutPresenter(::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(MenuFlyoutPresenter::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::MenuFlyoutPresenter^ UnwrapMenuFlyoutPresenter(Local<Value> value) {
     return MenuFlyoutPresenter::Unwrap<MenuFlyoutPresenter>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitMenuFlyoutPresenter(Local<Object> exports) {
    MenuFlyoutPresenter::Init(exports);
  }

  class MenuFlyoutSeparator : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("MenuFlyoutSeparator").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("MenuFlyoutSeparator").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      MenuFlyoutSeparator(::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::MenuFlyoutSeparator();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      MenuFlyoutSeparator *wrapperInstance = new MenuFlyoutSeparator(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapMenuFlyoutSeparator(winRtInstance));
    }





    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSeparator *wrapper = MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapMenuFlyoutSeparator(::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^ UnwrapMenuFlyoutSeparator(Local<Value> value);
  };

  Persistent<FunctionTemplate> MenuFlyoutSeparator::s_constructorTemplate;

  v8::Local<v8::Value> WrapMenuFlyoutSeparator(::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(MenuFlyoutSeparator::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::MenuFlyoutSeparator^ UnwrapMenuFlyoutSeparator(Local<Value> value) {
     return MenuFlyoutSeparator::Unwrap<MenuFlyoutSeparator>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitMenuFlyoutSeparator(Local<Object> exports) {
    MenuFlyoutSeparator::Init(exports);
  }

  class MenuFlyoutSubItem : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("MenuFlyoutSubItem").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("text").ToLocalChecked(), TextGetter, TextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("items").ToLocalChecked(), ItemsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("icon").ToLocalChecked(), IconGetter, IconSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("textProperty").ToLocalChecked(), TextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("iconProperty").ToLocalChecked(), IconPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("MenuFlyoutSubItem").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      MenuFlyoutSubItem(::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::MenuFlyoutSubItem();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      MenuFlyoutSubItem *wrapperInstance = new MenuFlyoutSubItem(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapMenuFlyoutSubItem(winRtInstance));
    }





    static void TextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This())) {
        return;
      }

      MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Text;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This())) {
        return;
      }

      MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Text = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This())) {
        return;
      }

      MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>^ result = wrapper->_instance->Items;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^ val) -> Local<Value> {
              return WrapMenuFlyoutItemBase(val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^ {
              return UnwrapMenuFlyoutItemBase(value);
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IconGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This())) {
        return;
      }

      MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::IconElement^ result = wrapper->_instance->Icon;
        info.GetReturnValue().Set(WrapIconElement(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IconSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This())) {
        return;
      }

      MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::IconElement^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::IconElement^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Icon = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void TextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MenuFlyoutSubItem::TextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IconPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MenuFlyoutSubItem::IconProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyoutSubItem *wrapper = MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapMenuFlyoutSubItem(::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^ UnwrapMenuFlyoutSubItem(Local<Value> value);
  };

  Persistent<FunctionTemplate> MenuFlyoutSubItem::s_constructorTemplate;

  v8::Local<v8::Value> WrapMenuFlyoutSubItem(::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(MenuFlyoutSubItem::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::MenuFlyoutSubItem^ UnwrapMenuFlyoutSubItem(Local<Value> value) {
     return MenuFlyoutSubItem::Unwrap<MenuFlyoutSubItem>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitMenuFlyoutSubItem(Local<Object> exports) {
    MenuFlyoutSubItem::Init(exports);
  }

  class Page : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("Page").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "onNavigatedFrom", OnNavigatedFrom);
            Nan::SetPrototypeMethod(localRef, "onNavigatedTo", OnNavigatedTo);
            Nan::SetPrototypeMethod(localRef, "onNavigatingFrom", OnNavigatingFrom);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("topAppBar").ToLocalChecked(), TopAppBarGetter, TopAppBarSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("navigationCacheMode").ToLocalChecked(), NavigationCacheModeGetter, NavigationCacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("bottomAppBar").ToLocalChecked(), BottomAppBarGetter, BottomAppBarSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("frame").ToLocalChecked(), FrameGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("bottomAppBarProperty").ToLocalChecked(), BottomAppBarPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("frameProperty").ToLocalChecked(), FramePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("topAppBarProperty").ToLocalChecked(), TopAppBarPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("Page").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      Page(::Windows::UI::Xaml::Controls::Page^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::Page^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::Page^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::Page();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      Page *wrapperInstance = new Page(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::Page^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::Page^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapPage(winRtInstance));
    }


    static void OnNavigatedFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This())) {
        return;
      }

      Page *wrapper = Page::Unwrap<Page>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Navigation::NavigationEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Navigation::NavigationEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::Navigation::NavigationEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnNavigatedFrom(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnNavigatedTo(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This())) {
        return;
      }

      Page *wrapper = Page::Unwrap<Page>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Navigation::NavigationEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Navigation::NavigationEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::Navigation::NavigationEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnNavigatedTo(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void OnNavigatingFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This())) {
        return;
      }

      Page *wrapper = Page::Unwrap<Page>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Navigation::NavigatingCancelEventArgs^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Navigation::NavigatingCancelEventArgs^ arg0 = dynamic_cast<::Windows::UI::Xaml::Navigation::NavigatingCancelEventArgs^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          wrapper->_instance->OnNavigatingFrom(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void TopAppBarGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This())) {
        return;
      }

      Page *wrapper = Page::Unwrap<Page>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::AppBar^ result = wrapper->_instance->TopAppBar;
        info.GetReturnValue().Set(WrapAppBar(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TopAppBarSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This())) {
        return;
      }

      Page *wrapper = Page::Unwrap<Page>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::AppBar^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::AppBar^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->TopAppBar = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NavigationCacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This())) {
        return;
      }

      Page *wrapper = Page::Unwrap<Page>(info.This());

      try  {
        ::Windows::UI::Xaml::Navigation::NavigationCacheMode result = wrapper->_instance->NavigationCacheMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NavigationCacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This())) {
        return;
      }

      Page *wrapper = Page::Unwrap<Page>(info.This());

      try {

        ::Windows::UI::Xaml::Navigation::NavigationCacheMode winRtValue = static_cast<::Windows::UI::Xaml::Navigation::NavigationCacheMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->NavigationCacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BottomAppBarGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This())) {
        return;
      }

      Page *wrapper = Page::Unwrap<Page>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::AppBar^ result = wrapper->_instance->BottomAppBar;
        info.GetReturnValue().Set(WrapAppBar(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BottomAppBarSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This())) {
        return;
      }

      Page *wrapper = Page::Unwrap<Page>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::AppBar^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::AppBar^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BottomAppBar = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FrameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This())) {
        return;
      }

      Page *wrapper = Page::Unwrap<Page>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Frame^ result = wrapper->_instance->Frame;
        info.GetReturnValue().Set(WrapFrame(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This())) {
        return;
      }

      UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::UserControl^>(info.This())) {
        return;
      }

      UserControl *wrapper = UserControl::Unwrap<UserControl>(info.This());

      try {

        ::Windows::UI::Xaml::UIElement^ winRtValue = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void BottomAppBarPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Page::BottomAppBarProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FramePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Page::FrameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TopAppBarPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Page::TopAppBarProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::UserControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Page *wrapper = Page::Unwrap<Page>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Page^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Page *wrapper = Page::Unwrap<Page>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::Page^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapPage(::Windows::UI::Xaml::Controls::Page^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::Page^ UnwrapPage(Local<Value> value);
  };

  Persistent<FunctionTemplate> Page::s_constructorTemplate;

  v8::Local<v8::Value> WrapPage(::Windows::UI::Xaml::Controls::Page^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(Page::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::Page^ UnwrapPage(Local<Value> value) {
     return Page::Unwrap<Page>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitPage(Local<Object> exports) {
    Page::Init(exports);
  }

  class ScrollViewer : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ScrollViewer").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "scrollToHorizontalOffset", ScrollToHorizontalOffset);
            Nan::SetPrototypeMethod(localRef, "scrollToVerticalOffset", ScrollToVerticalOffset);
            Nan::SetPrototypeMethod(localRef, "zoomToFactor", ZoomToFactor);
            Nan::SetPrototypeMethod(localRef, "invalidateScrollInfo", InvalidateScrollInfo);
            Nan::SetPrototypeMethod(localRef, "changeView", ChangeView);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalScrollBarVisibility").ToLocalChecked(), HorizontalScrollBarVisibilityGetter, HorizontalScrollBarVisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isZoomInertiaEnabled").ToLocalChecked(), IsZoomInertiaEnabledGetter, IsZoomInertiaEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isZoomChainingEnabled").ToLocalChecked(), IsZoomChainingEnabledGetter, IsZoomChainingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isVerticalScrollChainingEnabled").ToLocalChecked(), IsVerticalScrollChainingEnabledGetter, IsVerticalScrollChainingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isVerticalRailEnabled").ToLocalChecked(), IsVerticalRailEnabledGetter, IsVerticalRailEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxZoomFactor").ToLocalChecked(), MaxZoomFactorGetter, MaxZoomFactorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isScrollInertiaEnabled").ToLocalChecked(), IsScrollInertiaEnabledGetter, IsScrollInertiaEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHorizontalScrollChainingEnabled").ToLocalChecked(), IsHorizontalScrollChainingEnabledGetter, IsHorizontalScrollChainingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHorizontalRailEnabled").ToLocalChecked(), IsHorizontalRailEnabledGetter, IsHorizontalRailEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDeferredScrollingEnabled").ToLocalChecked(), IsDeferredScrollingEnabledGetter, IsDeferredScrollingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalSnapPointsType").ToLocalChecked(), HorizontalSnapPointsTypeGetter, HorizontalSnapPointsTypeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalSnapPointsAlignment").ToLocalChecked(), HorizontalSnapPointsAlignmentGetter, HorizontalSnapPointsAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalScrollMode").ToLocalChecked(), HorizontalScrollModeGetter, HorizontalScrollModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("bringIntoViewOnFocusChange").ToLocalChecked(), BringIntoViewOnFocusChangeGetter, BringIntoViewOnFocusChangeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("zoomSnapPointsType").ToLocalChecked(), ZoomSnapPointsTypeGetter, ZoomSnapPointsTypeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("zoomMode").ToLocalChecked(), ZoomModeGetter, ZoomModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalSnapPointsType").ToLocalChecked(), VerticalSnapPointsTypeGetter, VerticalSnapPointsTypeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalSnapPointsAlignment").ToLocalChecked(), VerticalSnapPointsAlignmentGetter, VerticalSnapPointsAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minZoomFactor").ToLocalChecked(), MinZoomFactorGetter, MinZoomFactorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalScrollBarVisibility").ToLocalChecked(), VerticalScrollBarVisibilityGetter, VerticalScrollBarVisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalScrollMode").ToLocalChecked(), VerticalScrollModeGetter, VerticalScrollModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("scrollableHeight").ToLocalChecked(), ScrollableHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("scrollableWidth").ToLocalChecked(), ScrollableWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalOffset").ToLocalChecked(), VerticalOffsetGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("computedVerticalScrollBarVisibility").ToLocalChecked(), ComputedVerticalScrollBarVisibilityGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("extentHeight").ToLocalChecked(), ExtentHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("viewportHeight").ToLocalChecked(), ViewportHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("viewportWidth").ToLocalChecked(), ViewportWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("zoomFactor").ToLocalChecked(), ZoomFactorGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("computedHorizontalScrollBarVisibility").ToLocalChecked(), ComputedHorizontalScrollBarVisibilityGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("extentWidth").ToLocalChecked(), ExtentWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("zoomSnapPoints").ToLocalChecked(), ZoomSnapPointsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalOffset").ToLocalChecked(), HorizontalOffsetGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("topHeader").ToLocalChecked(), TopHeaderGetter, TopHeaderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("leftHeader").ToLocalChecked(), LeftHeaderGetter, LeftHeaderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("topLeftHeader").ToLocalChecked(), TopLeftHeaderGetter, TopLeftHeaderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetMethod(constructor, "getIsHorizontalScrollChainingEnabled", GetIsHorizontalScrollChainingEnabled);
        Nan::SetMethod(constructor, "setIsHorizontalScrollChainingEnabled", SetIsHorizontalScrollChainingEnabled);
        Nan::SetMethod(constructor, "getIsVerticalScrollChainingEnabled", GetIsVerticalScrollChainingEnabled);
        Nan::SetMethod(constructor, "setIsVerticalScrollChainingEnabled", SetIsVerticalScrollChainingEnabled);
        Nan::SetMethod(constructor, "getIsZoomChainingEnabled", GetIsZoomChainingEnabled);
        Nan::SetMethod(constructor, "setIsZoomChainingEnabled", SetIsZoomChainingEnabled);
        Nan::SetMethod(constructor, "getIsScrollInertiaEnabled", GetIsScrollInertiaEnabled);
        Nan::SetMethod(constructor, "setIsScrollInertiaEnabled", SetIsScrollInertiaEnabled);
        Nan::SetMethod(constructor, "getIsZoomInertiaEnabled", GetIsZoomInertiaEnabled);
        Nan::SetMethod(constructor, "setIsZoomInertiaEnabled", SetIsZoomInertiaEnabled);
        Nan::SetMethod(constructor, "getHorizontalScrollMode", GetHorizontalScrollMode);
        Nan::SetMethod(constructor, "setHorizontalScrollMode", SetHorizontalScrollMode);
        Nan::SetMethod(constructor, "getVerticalScrollMode", GetVerticalScrollMode);
        Nan::SetMethod(constructor, "setVerticalScrollMode", SetVerticalScrollMode);
        Nan::SetMethod(constructor, "getZoomMode", GetZoomMode);
        Nan::SetMethod(constructor, "setZoomMode", SetZoomMode);
        Nan::SetMethod(constructor, "getIsDeferredScrollingEnabled", GetIsDeferredScrollingEnabled);
        Nan::SetMethod(constructor, "setIsDeferredScrollingEnabled", SetIsDeferredScrollingEnabled);
        Nan::SetMethod(constructor, "getBringIntoViewOnFocusChange", GetBringIntoViewOnFocusChange);
        Nan::SetMethod(constructor, "setBringIntoViewOnFocusChange", SetBringIntoViewOnFocusChange);
        Nan::SetMethod(constructor, "getHorizontalScrollBarVisibility", GetHorizontalScrollBarVisibility);
        Nan::SetMethod(constructor, "setHorizontalScrollBarVisibility", SetHorizontalScrollBarVisibility);
        Nan::SetMethod(constructor, "getVerticalScrollBarVisibility", GetVerticalScrollBarVisibility);
        Nan::SetMethod(constructor, "setVerticalScrollBarVisibility", SetVerticalScrollBarVisibility);
        Nan::SetMethod(constructor, "getIsHorizontalRailEnabled", GetIsHorizontalRailEnabled);
        Nan::SetMethod(constructor, "setIsHorizontalRailEnabled", SetIsHorizontalRailEnabled);
        Nan::SetMethod(constructor, "getIsVerticalRailEnabled", GetIsVerticalRailEnabled);
        Nan::SetMethod(constructor, "setIsVerticalRailEnabled", SetIsVerticalRailEnabled);
        Nan::SetAccessor(constructor, Nan::New<String>("extentWidthProperty").ToLocalChecked(), ExtentWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("bringIntoViewOnFocusChangeProperty").ToLocalChecked(), BringIntoViewOnFocusChangePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("computedHorizontalScrollBarVisibilityProperty").ToLocalChecked(), ComputedHorizontalScrollBarVisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("computedVerticalScrollBarVisibilityProperty").ToLocalChecked(), ComputedVerticalScrollBarVisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("extentHeightProperty").ToLocalChecked(), ExtentHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isZoomInertiaEnabledProperty").ToLocalChecked(), IsZoomInertiaEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalOffsetProperty").ToLocalChecked(), HorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalScrollBarVisibilityProperty").ToLocalChecked(), HorizontalScrollBarVisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalScrollModeProperty").ToLocalChecked(), HorizontalScrollModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalSnapPointsAlignmentProperty").ToLocalChecked(), HorizontalSnapPointsAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalSnapPointsTypeProperty").ToLocalChecked(), HorizontalSnapPointsTypePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDeferredScrollingEnabledProperty").ToLocalChecked(), IsDeferredScrollingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHorizontalRailEnabledProperty").ToLocalChecked(), IsHorizontalRailEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHorizontalScrollChainingEnabledProperty").ToLocalChecked(), IsHorizontalScrollChainingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isScrollInertiaEnabledProperty").ToLocalChecked(), IsScrollInertiaEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isVerticalRailEnabledProperty").ToLocalChecked(), IsVerticalRailEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isVerticalScrollChainingEnabledProperty").ToLocalChecked(), IsVerticalScrollChainingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isZoomChainingEnabledProperty").ToLocalChecked(), IsZoomChainingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxZoomFactorProperty").ToLocalChecked(), MaxZoomFactorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minZoomFactorProperty").ToLocalChecked(), MinZoomFactorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("scrollableHeightProperty").ToLocalChecked(), ScrollableHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("scrollableWidthProperty").ToLocalChecked(), ScrollableWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalOffsetProperty").ToLocalChecked(), VerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalScrollBarVisibilityProperty").ToLocalChecked(), VerticalScrollBarVisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalScrollModeProperty").ToLocalChecked(), VerticalScrollModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalSnapPointsAlignmentProperty").ToLocalChecked(), VerticalSnapPointsAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalSnapPointsTypeProperty").ToLocalChecked(), VerticalSnapPointsTypePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("viewportHeightProperty").ToLocalChecked(), ViewportHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("viewportWidthProperty").ToLocalChecked(), ViewportWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("zoomFactorProperty").ToLocalChecked(), ZoomFactorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("zoomModeProperty").ToLocalChecked(), ZoomModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("zoomSnapPointsProperty").ToLocalChecked(), ZoomSnapPointsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("zoomSnapPointsTypeProperty").ToLocalChecked(), ZoomSnapPointsTypePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("topHeaderProperty").ToLocalChecked(), TopHeaderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("topLeftHeaderProperty").ToLocalChecked(), TopLeftHeaderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("leftHeaderProperty").ToLocalChecked(), LeftHeaderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ScrollViewer").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ScrollViewer(::Windows::UI::Xaml::Controls::ScrollViewer^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ScrollViewer^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ScrollViewer^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ScrollViewer();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ScrollViewer *wrapperInstance = new ScrollViewer(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ScrollViewer^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ScrollViewer^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapScrollViewer(winRtInstance));
    }


    static void ScrollToHorizontalOffset(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      if (info.Length() == 1
        && info[0]->IsNumber())
      {
        try
        {
          double arg0 = Nan::To<double>(info[0]).FromMaybe(0.0);
          
          wrapper->_instance->ScrollToHorizontalOffset(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void ScrollToVerticalOffset(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      if (info.Length() == 1
        && info[0]->IsNumber())
      {
        try
        {
          double arg0 = Nan::To<double>(info[0]).FromMaybe(0.0);
          
          wrapper->_instance->ScrollToVerticalOffset(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void ZoomToFactor(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      if (info.Length() == 1
        && info[0]->IsNumber())
      {
        try
        {
          float arg0 = static_cast<float>(Nan::To<double>(info[0]).FromMaybe(0.0));
          
          wrapper->_instance->ZoomToFactor(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void InvalidateScrollInfo(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->InvalidateScrollInfo();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void ChangeView(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      if (info.Length() == 3
        && info[0]->IsNumber()
        && info[1]->IsNumber()
        && info[2]->IsNumber())
      {
        try
        {
          ::Platform::IBox<double>^ arg0 = ref new ::Platform::Box<double>(Nan::To<double>(info[0]).FromMaybe(0.0));
          ::Platform::IBox<double>^ arg1 = ref new ::Platform::Box<double>(Nan::To<double>(info[1]).FromMaybe(0.0));
          ::Platform::IBox<float>^ arg2 = ref new ::Platform::Box<float>(static_cast<float>(Nan::To<double>(info[2]).FromMaybe(0.0)));
          
          bool result;
          result = wrapper->_instance->ChangeView(arg0, arg1, arg2);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 4
        && info[0]->IsNumber()
        && info[1]->IsNumber()
        && info[2]->IsNumber()
        && info[3]->IsBoolean())
      {
        try
        {
          ::Platform::IBox<double>^ arg0 = ref new ::Platform::Box<double>(Nan::To<double>(info[0]).FromMaybe(0.0));
          ::Platform::IBox<double>^ arg1 = ref new ::Platform::Box<double>(Nan::To<double>(info[1]).FromMaybe(0.0));
          ::Platform::IBox<float>^ arg2 = ref new ::Platform::Box<float>(static_cast<float>(Nan::To<double>(info[2]).FromMaybe(0.0)));
          bool arg3 = Nan::To<bool>(info[3]).FromMaybe(false);
          
          bool result;
          result = wrapper->_instance->ChangeView(arg0, arg1, arg2, arg3);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void GetIsHorizontalScrollChainingEnabled(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          bool result;
          result = ::Windows::UI::Xaml::Controls::ScrollViewer::GetIsHorizontalScrollChainingEnabled(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetIsHorizontalScrollChainingEnabled(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0])
        && info[1]->IsBoolean())
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          bool arg1 = Nan::To<bool>(info[1]).FromMaybe(false);
          
          ::Windows::UI::Xaml::Controls::ScrollViewer::SetIsHorizontalScrollChainingEnabled(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetIsVerticalScrollChainingEnabled(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          bool result;
          result = ::Windows::UI::Xaml::Controls::ScrollViewer::GetIsVerticalScrollChainingEnabled(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetIsVerticalScrollChainingEnabled(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0])
        && info[1]->IsBoolean())
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          bool arg1 = Nan::To<bool>(info[1]).FromMaybe(false);
          
          ::Windows::UI::Xaml::Controls::ScrollViewer::SetIsVerticalScrollChainingEnabled(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetIsZoomChainingEnabled(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          bool result;
          result = ::Windows::UI::Xaml::Controls::ScrollViewer::GetIsZoomChainingEnabled(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetIsZoomChainingEnabled(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0])
        && info[1]->IsBoolean())
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          bool arg1 = Nan::To<bool>(info[1]).FromMaybe(false);
          
          ::Windows::UI::Xaml::Controls::ScrollViewer::SetIsZoomChainingEnabled(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetIsScrollInertiaEnabled(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          bool result;
          result = ::Windows::UI::Xaml::Controls::ScrollViewer::GetIsScrollInertiaEnabled(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetIsScrollInertiaEnabled(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0])
        && info[1]->IsBoolean())
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          bool arg1 = Nan::To<bool>(info[1]).FromMaybe(false);
          
          ::Windows::UI::Xaml::Controls::ScrollViewer::SetIsScrollInertiaEnabled(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetIsZoomInertiaEnabled(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          bool result;
          result = ::Windows::UI::Xaml::Controls::ScrollViewer::GetIsZoomInertiaEnabled(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetIsZoomInertiaEnabled(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0])
        && info[1]->IsBoolean())
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          bool arg1 = Nan::To<bool>(info[1]).FromMaybe(false);
          
          ::Windows::UI::Xaml::Controls::ScrollViewer::SetIsZoomInertiaEnabled(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetHorizontalScrollMode(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Windows::UI::Xaml::Controls::ScrollMode result;
          result = ::Windows::UI::Xaml::Controls::ScrollViewer::GetHorizontalScrollMode(arg0);
          info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetHorizontalScrollMode(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0])
        && info[1]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::UI::Xaml::Controls::ScrollMode arg1 = static_cast<::Windows::UI::Xaml::Controls::ScrollMode>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::ScrollViewer::SetHorizontalScrollMode(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetVerticalScrollMode(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Windows::UI::Xaml::Controls::ScrollMode result;
          result = ::Windows::UI::Xaml::Controls::ScrollViewer::GetVerticalScrollMode(arg0);
          info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetVerticalScrollMode(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0])
        && info[1]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::UI::Xaml::Controls::ScrollMode arg1 = static_cast<::Windows::UI::Xaml::Controls::ScrollMode>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::ScrollViewer::SetVerticalScrollMode(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetZoomMode(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Windows::UI::Xaml::Controls::ZoomMode result;
          result = ::Windows::UI::Xaml::Controls::ScrollViewer::GetZoomMode(arg0);
          info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetZoomMode(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0])
        && info[1]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::UI::Xaml::Controls::ZoomMode arg1 = static_cast<::Windows::UI::Xaml::Controls::ZoomMode>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::ScrollViewer::SetZoomMode(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetIsDeferredScrollingEnabled(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          bool result;
          result = ::Windows::UI::Xaml::Controls::ScrollViewer::GetIsDeferredScrollingEnabled(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetIsDeferredScrollingEnabled(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0])
        && info[1]->IsBoolean())
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          bool arg1 = Nan::To<bool>(info[1]).FromMaybe(false);
          
          ::Windows::UI::Xaml::Controls::ScrollViewer::SetIsDeferredScrollingEnabled(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetBringIntoViewOnFocusChange(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          bool result;
          result = ::Windows::UI::Xaml::Controls::ScrollViewer::GetBringIntoViewOnFocusChange(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetBringIntoViewOnFocusChange(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0])
        && info[1]->IsBoolean())
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          bool arg1 = Nan::To<bool>(info[1]).FromMaybe(false);
          
          ::Windows::UI::Xaml::Controls::ScrollViewer::SetBringIntoViewOnFocusChange(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetHorizontalScrollBarVisibility(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Windows::UI::Xaml::Controls::ScrollBarVisibility result;
          result = ::Windows::UI::Xaml::Controls::ScrollViewer::GetHorizontalScrollBarVisibility(arg0);
          info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetHorizontalScrollBarVisibility(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0])
        && info[1]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::UI::Xaml::Controls::ScrollBarVisibility arg1 = static_cast<::Windows::UI::Xaml::Controls::ScrollBarVisibility>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::ScrollViewer::SetHorizontalScrollBarVisibility(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetVerticalScrollBarVisibility(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Windows::UI::Xaml::Controls::ScrollBarVisibility result;
          result = ::Windows::UI::Xaml::Controls::ScrollViewer::GetVerticalScrollBarVisibility(arg0);
          info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetVerticalScrollBarVisibility(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0])
        && info[1]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::UI::Xaml::Controls::ScrollBarVisibility arg1 = static_cast<::Windows::UI::Xaml::Controls::ScrollBarVisibility>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::ScrollViewer::SetVerticalScrollBarVisibility(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetIsHorizontalRailEnabled(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          bool result;
          result = ::Windows::UI::Xaml::Controls::ScrollViewer::GetIsHorizontalRailEnabled(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetIsHorizontalRailEnabled(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0])
        && info[1]->IsBoolean())
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          bool arg1 = Nan::To<bool>(info[1]).FromMaybe(false);
          
          ::Windows::UI::Xaml::Controls::ScrollViewer::SetIsHorizontalRailEnabled(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void GetIsVerticalRailEnabled(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          bool result;
          result = ::Windows::UI::Xaml::Controls::ScrollViewer::GetIsVerticalRailEnabled(arg0);
          info.GetReturnValue().Set(Nan::New<Boolean>(result));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetIsVerticalRailEnabled(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info[0])
        && info[1]->IsBoolean())
      {
        try
        {
          ::Windows::UI::Xaml::DependencyObject^ arg0 = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(info[0]));
          bool arg1 = Nan::To<bool>(info[1]).FromMaybe(false);
          
          ::Windows::UI::Xaml::Controls::ScrollViewer::SetIsVerticalRailEnabled(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void HorizontalScrollBarVisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ScrollBarVisibility result = wrapper->_instance->HorizontalScrollBarVisibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalScrollBarVisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ScrollBarVisibility winRtValue = static_cast<::Windows::UI::Xaml::Controls::ScrollBarVisibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalScrollBarVisibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsZoomInertiaEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        bool result = wrapper->_instance->IsZoomInertiaEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsZoomInertiaEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsZoomInertiaEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsZoomChainingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        bool result = wrapper->_instance->IsZoomChainingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsZoomChainingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsZoomChainingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsVerticalScrollChainingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        bool result = wrapper->_instance->IsVerticalScrollChainingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsVerticalScrollChainingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsVerticalScrollChainingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsVerticalRailEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        bool result = wrapper->_instance->IsVerticalRailEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsVerticalRailEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsVerticalRailEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxZoomFactorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        float result = wrapper->_instance->MaxZoomFactor;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxZoomFactorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        float winRtValue = static_cast<float>(Nan::To<double>(value).FromMaybe(0.0));

        wrapper->_instance->MaxZoomFactor = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsScrollInertiaEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        bool result = wrapper->_instance->IsScrollInertiaEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsScrollInertiaEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsScrollInertiaEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHorizontalScrollChainingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        bool result = wrapper->_instance->IsHorizontalScrollChainingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHorizontalScrollChainingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHorizontalScrollChainingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHorizontalRailEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        bool result = wrapper->_instance->IsHorizontalRailEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHorizontalRailEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHorizontalRailEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDeferredScrollingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        bool result = wrapper->_instance->IsDeferredScrollingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDeferredScrollingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDeferredScrollingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalSnapPointsTypeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::SnapPointsType result = wrapper->_instance->HorizontalSnapPointsType;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalSnapPointsTypeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::SnapPointsType winRtValue = static_cast<::Windows::UI::Xaml::Controls::SnapPointsType>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalSnapPointsType = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalSnapPointsAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::SnapPointsAlignment result = wrapper->_instance->HorizontalSnapPointsAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalSnapPointsAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::SnapPointsAlignment winRtValue = static_cast<::Windows::UI::Xaml::Controls::Primitives::SnapPointsAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalSnapPointsAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalScrollModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ScrollMode result = wrapper->_instance->HorizontalScrollMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalScrollModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ScrollMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ScrollMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalScrollMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BringIntoViewOnFocusChangeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        bool result = wrapper->_instance->BringIntoViewOnFocusChange;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BringIntoViewOnFocusChangeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->BringIntoViewOnFocusChange = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ZoomSnapPointsTypeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::SnapPointsType result = wrapper->_instance->ZoomSnapPointsType;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ZoomSnapPointsTypeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::SnapPointsType winRtValue = static_cast<::Windows::UI::Xaml::Controls::SnapPointsType>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ZoomSnapPointsType = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ZoomModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ZoomMode result = wrapper->_instance->ZoomMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ZoomModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ZoomMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ZoomMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ZoomMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalSnapPointsTypeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::SnapPointsType result = wrapper->_instance->VerticalSnapPointsType;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalSnapPointsTypeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::SnapPointsType winRtValue = static_cast<::Windows::UI::Xaml::Controls::SnapPointsType>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalSnapPointsType = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalSnapPointsAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::SnapPointsAlignment result = wrapper->_instance->VerticalSnapPointsAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalSnapPointsAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::SnapPointsAlignment winRtValue = static_cast<::Windows::UI::Xaml::Controls::Primitives::SnapPointsAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalSnapPointsAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinZoomFactorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        float result = wrapper->_instance->MinZoomFactor;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinZoomFactorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        float winRtValue = static_cast<float>(Nan::To<double>(value).FromMaybe(0.0));

        wrapper->_instance->MinZoomFactor = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalScrollBarVisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ScrollBarVisibility result = wrapper->_instance->VerticalScrollBarVisibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalScrollBarVisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ScrollBarVisibility winRtValue = static_cast<::Windows::UI::Xaml::Controls::ScrollBarVisibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalScrollBarVisibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalScrollModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ScrollMode result = wrapper->_instance->VerticalScrollMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalScrollModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ScrollMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ScrollMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalScrollMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ScrollableHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        double result = wrapper->_instance->ScrollableHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ScrollableWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        double result = wrapper->_instance->ScrollableWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        double result = wrapper->_instance->VerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ComputedVerticalScrollBarVisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->ComputedVerticalScrollBarVisibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExtentHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        double result = wrapper->_instance->ExtentHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ViewportHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        double result = wrapper->_instance->ViewportHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ViewportWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        double result = wrapper->_instance->ViewportWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ZoomFactorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        float result = wrapper->_instance->ZoomFactor;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ComputedHorizontalScrollBarVisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->ComputedHorizontalScrollBarVisibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExtentWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        double result = wrapper->_instance->ExtentWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ZoomSnapPointsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<float>^ result = wrapper->_instance->ZoomSnapPoints;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<float>::CreateVectorWrapper(result, 
            [](float val) -> Local<Value> {
              return Nan::New<Number>(static_cast<double>(val));
            },
            [](Local<Value> value) -> bool {
              return value->IsNumber();
            },
            [](Local<Value> value) -> float {
              return static_cast<float>(Nan::To<double>(value).FromMaybe(0.0));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        double result = wrapper->_instance->HorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TopHeaderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->TopHeader;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TopHeaderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        ::Windows::UI::Xaml::UIElement^ winRtValue = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->TopHeader = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LeftHeaderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->LeftHeader;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LeftHeaderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        ::Windows::UI::Xaml::UIElement^ winRtValue = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->LeftHeader = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TopLeftHeaderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->TopLeftHeader;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TopLeftHeaderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This())) {
        return;
      }

      ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());

      try {

        ::Windows::UI::Xaml::UIElement^ winRtValue = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->TopLeftHeader = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ExtentWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::ExtentWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BringIntoViewOnFocusChangePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::BringIntoViewOnFocusChangeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ComputedHorizontalScrollBarVisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::ComputedHorizontalScrollBarVisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ComputedVerticalScrollBarVisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::ComputedVerticalScrollBarVisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExtentHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::ExtentHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsZoomInertiaEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::IsZoomInertiaEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::HorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalScrollBarVisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::HorizontalScrollBarVisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalScrollModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::HorizontalScrollModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalSnapPointsAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::HorizontalSnapPointsAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalSnapPointsTypePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::HorizontalSnapPointsTypeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDeferredScrollingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::IsDeferredScrollingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHorizontalRailEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::IsHorizontalRailEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHorizontalScrollChainingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::IsHorizontalScrollChainingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsScrollInertiaEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::IsScrollInertiaEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsVerticalRailEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::IsVerticalRailEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsVerticalScrollChainingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::IsVerticalScrollChainingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsZoomChainingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::IsZoomChainingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxZoomFactorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::MaxZoomFactorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinZoomFactorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::MinZoomFactorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ScrollableHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::ScrollableHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ScrollableWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::ScrollableWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::VerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalScrollBarVisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::VerticalScrollBarVisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalScrollModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::VerticalScrollModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalSnapPointsAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::VerticalSnapPointsAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalSnapPointsTypePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::VerticalSnapPointsTypeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ViewportHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::ViewportHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ViewportWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::ViewportWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ZoomFactorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::ZoomFactorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ZoomModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::ZoomModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ZoomSnapPointsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::ZoomSnapPointsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ZoomSnapPointsTypePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::ZoomSnapPointsTypeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TopHeaderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::TopHeaderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TopLeftHeaderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::TopLeftHeaderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LeftHeaderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ScrollViewer::LeftHeaderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"viewChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ViewChanged::add(
            ref new ::Windows::Foundation::EventHandler<::Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapScrollViewerViewChangedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"viewChanging", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ViewChanging::add(
            ref new ::Windows::Foundation::EventHandler<::Windows::UI::Xaml::Controls::ScrollViewerViewChangingEventArgs^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::ScrollViewerViewChangingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapScrollViewerViewChangingEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"directManipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DirectManipulationCompleted::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"directManipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DirectManipulationStarted::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"viewChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"viewChanging", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"directManipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"directManipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"viewChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->ViewChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"viewChanging", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->ViewChanging::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"directManipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->DirectManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"directManipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->DirectManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ScrollViewer^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ScrollViewer *wrapper = ScrollViewer::Unwrap<ScrollViewer>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ScrollViewer^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapScrollViewer(::Windows::UI::Xaml::Controls::ScrollViewer^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ScrollViewer^ UnwrapScrollViewer(Local<Value> value);
  };

  Persistent<FunctionTemplate> ScrollViewer::s_constructorTemplate;

  v8::Local<v8::Value> WrapScrollViewer(::Windows::UI::Xaml::Controls::ScrollViewer^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ScrollViewer::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ScrollViewer^ UnwrapScrollViewer(Local<Value> value) {
     return ScrollViewer::Unwrap<ScrollViewer>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitScrollViewer(Local<Object> exports) {
    ScrollViewer::Init(exports);
  }

  class CommandBar : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("CommandBar").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("primaryCommands").ToLocalChecked(), PrimaryCommandsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("secondaryCommands").ToLocalChecked(), SecondaryCommandsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandBarOverflowPresenterStyle").ToLocalChecked(), CommandBarOverflowPresenterStyleGetter, CommandBarOverflowPresenterStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandBarTemplateSettings").ToLocalChecked(), CommandBarTemplateSettingsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("overflowButtonVisibility").ToLocalChecked(), OverflowButtonVisibilityGetter, OverflowButtonVisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDynamicOverflowEnabled").ToLocalChecked(), IsDynamicOverflowEnabledGetter, IsDynamicOverflowEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultLabelPosition").ToLocalChecked(), DefaultLabelPositionGetter, DefaultLabelPositionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSticky").ToLocalChecked(), IsStickyGetter, IsStickySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isOpen").ToLocalChecked(), IsOpenGetter, IsOpenSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("closedDisplayMode").ToLocalChecked(), ClosedDisplayModeGetter, ClosedDisplayModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("templateSettings").ToLocalChecked(), TemplateSettingsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lightDismissOverlayMode").ToLocalChecked(), LightDismissOverlayModeGetter, LightDismissOverlayModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("primaryCommandsProperty").ToLocalChecked(), PrimaryCommandsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("secondaryCommandsProperty").ToLocalChecked(), SecondaryCommandsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandBarOverflowPresenterStyleProperty").ToLocalChecked(), CommandBarOverflowPresenterStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultLabelPositionProperty").ToLocalChecked(), DefaultLabelPositionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDynamicOverflowEnabledProperty").ToLocalChecked(), IsDynamicOverflowEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("overflowButtonVisibilityProperty").ToLocalChecked(), OverflowButtonVisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isOpenProperty").ToLocalChecked(), IsOpenPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isStickyProperty").ToLocalChecked(), IsStickyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("closedDisplayModeProperty").ToLocalChecked(), ClosedDisplayModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightDismissOverlayModeProperty").ToLocalChecked(), LightDismissOverlayModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("CommandBar").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      CommandBar(::Windows::UI::Xaml::Controls::CommandBar^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::CommandBar^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::CommandBar^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::CommandBar();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      CommandBar *wrapperInstance = new CommandBar(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::CommandBar^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::CommandBar^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapCommandBar(winRtInstance));
    }





    static void PrimaryCommandsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This())) {
        return;
      }

      CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());

      try  {
        ::Windows::Foundation::Collections::IObservableVector<::Windows::UI::Xaml::Controls::ICommandBarElement^>^ result = wrapper->_instance->PrimaryCommands;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "IObservableVector`1", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SecondaryCommandsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This())) {
        return;
      }

      CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());

      try  {
        ::Windows::Foundation::Collections::IObservableVector<::Windows::UI::Xaml::Controls::ICommandBarElement^>^ result = wrapper->_instance->SecondaryCommands;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "IObservableVector`1", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandBarOverflowPresenterStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This())) {
        return;
      }

      CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->CommandBarOverflowPresenterStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandBarOverflowPresenterStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This())) {
        return;
      }

      CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CommandBarOverflowPresenterStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandBarTemplateSettingsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This())) {
        return;
      }

      CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::CommandBarTemplateSettings^ result = wrapper->_instance->CommandBarTemplateSettings;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "CommandBarTemplateSettings", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OverflowButtonVisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This())) {
        return;
      }

      CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::CommandBarOverflowButtonVisibility result = wrapper->_instance->OverflowButtonVisibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OverflowButtonVisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This())) {
        return;
      }

      CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::CommandBarOverflowButtonVisibility winRtValue = static_cast<::Windows::UI::Xaml::Controls::CommandBarOverflowButtonVisibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->OverflowButtonVisibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDynamicOverflowEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This())) {
        return;
      }

      CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());

      try  {
        bool result = wrapper->_instance->IsDynamicOverflowEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDynamicOverflowEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This())) {
        return;
      }

      CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDynamicOverflowEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultLabelPositionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This())) {
        return;
      }

      CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::CommandBarDefaultLabelPosition result = wrapper->_instance->DefaultLabelPosition;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultLabelPositionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This())) {
        return;
      }

      CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::CommandBarDefaultLabelPosition winRtValue = static_cast<::Windows::UI::Xaml::Controls::CommandBarDefaultLabelPosition>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->DefaultLabelPosition = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsStickyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This())) {
        return;
      }

      AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());

      try  {
        bool result = wrapper->_instance->IsSticky;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsStickySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This())) {
        return;
      }

      AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsSticky = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsOpenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This())) {
        return;
      }

      AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());

      try  {
        bool result = wrapper->_instance->IsOpen;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsOpenSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This())) {
        return;
      }

      AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsOpen = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClosedDisplayModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This())) {
        return;
      }

      AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::AppBarClosedDisplayMode result = wrapper->_instance->ClosedDisplayMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClosedDisplayModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This())) {
        return;
      }

      AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::AppBarClosedDisplayMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::AppBarClosedDisplayMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ClosedDisplayMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateSettingsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This())) {
        return;
      }

      AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::AppBarTemplateSettings^ result = wrapper->_instance->TemplateSettings;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "AppBarTemplateSettings", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LightDismissOverlayModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This())) {
        return;
      }

      AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode result = wrapper->_instance->LightDismissOverlayMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LightDismissOverlayModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBar^>(info.This())) {
        return;
      }

      AppBar *wrapper = AppBar::Unwrap<AppBar>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::LightDismissOverlayMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->LightDismissOverlayMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void PrimaryCommandsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CommandBar::PrimaryCommandsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SecondaryCommandsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CommandBar::SecondaryCommandsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandBarOverflowPresenterStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CommandBar::CommandBarOverflowPresenterStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultLabelPositionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CommandBar::DefaultLabelPositionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDynamicOverflowEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CommandBar::IsDynamicOverflowEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OverflowButtonVisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::CommandBar::OverflowButtonVisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsOpenPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AppBar::IsOpenProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsStickyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AppBar::IsStickyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClosedDisplayModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AppBar::ClosedDisplayModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightDismissOverlayModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AppBar::LightDismissOverlayModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"dynamicOverflowItemsChanging", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DynamicOverflowItemsChanging::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::CommandBar^, ::Windows::UI::Xaml::Controls::DynamicOverflowItemsChangingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::CommandBar^ arg0, ::Windows::UI::Xaml::Controls::DynamicOverflowItemsChangingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapCommandBar(arg0);
                  wrappedArg1 = WrapDynamicOverflowItemsChangingEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"closed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Closed::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"opened", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Opened::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Closing::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"opening", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Opening::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"dynamicOverflowItemsChanging", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"closed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"opened", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"closing", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"opening", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"dynamicOverflowItemsChanging", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->DynamicOverflowItemsChanging::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"closed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->Closed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"opened", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->Opened::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->Closing::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"opening", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->Opening::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::CommandBar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          CommandBar *wrapper = CommandBar::Unwrap<CommandBar>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::CommandBar^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapCommandBar(::Windows::UI::Xaml::Controls::CommandBar^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::CommandBar^ UnwrapCommandBar(Local<Value> value);
  };

  Persistent<FunctionTemplate> CommandBar::s_constructorTemplate;

  v8::Local<v8::Value> WrapCommandBar(::Windows::UI::Xaml::Controls::CommandBar^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(CommandBar::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::CommandBar^ UnwrapCommandBar(Local<Value> value) {
     return CommandBar::Unwrap<CommandBar>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitCommandBar(Local<Object> exports) {
    CommandBar::Init(exports);
  }

  class GridViewHeaderItem : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("GridViewHeaderItem").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("GridViewHeaderItem").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      GridViewHeaderItem(::Windows::UI::Xaml::Controls::GridViewHeaderItem^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::GridViewHeaderItem^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::GridViewHeaderItem^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::GridViewHeaderItem();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      GridViewHeaderItem *wrapperInstance = new GridViewHeaderItem(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::GridViewHeaderItem^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::GridViewHeaderItem^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapGridViewHeaderItem(winRtInstance));
    }





    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewHeaderItem *wrapper = GridViewHeaderItem::Unwrap<GridViewHeaderItem>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::GridViewHeaderItem^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapGridViewHeaderItem(::Windows::UI::Xaml::Controls::GridViewHeaderItem^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::GridViewHeaderItem^ UnwrapGridViewHeaderItem(Local<Value> value);
  };

  Persistent<FunctionTemplate> GridViewHeaderItem::s_constructorTemplate;

  v8::Local<v8::Value> WrapGridViewHeaderItem(::Windows::UI::Xaml::Controls::GridViewHeaderItem^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(GridViewHeaderItem::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::GridViewHeaderItem^ UnwrapGridViewHeaderItem(Local<Value> value) {
     return GridViewHeaderItem::Unwrap<GridViewHeaderItem>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitGridViewHeaderItem(Local<Object> exports) {
    GridViewHeaderItem::Init(exports);
  }

  class GridViewItem : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("GridViewItem").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("templateSettings").ToLocalChecked(), TemplateSettingsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSelected").ToLocalChecked(), IsSelectedGetter, IsSelectedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isSelectedProperty").ToLocalChecked(), IsSelectedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("GridViewItem").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      GridViewItem(::Windows::UI::Xaml::Controls::GridViewItem^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::GridViewItem^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::GridViewItem^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::GridViewItem();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      GridViewItem *wrapperInstance = new GridViewItem(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::GridViewItem^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::GridViewItem^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapGridViewItem(winRtInstance));
    }





    static void TemplateSettingsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This())) {
        return;
      }

      GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::GridViewItemTemplateSettings^ result = wrapper->_instance->TemplateSettings;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "GridViewItemTemplateSettings", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSelectedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::SelectorItem^>(info.This())) {
        return;
      }

      SelectorItem *wrapper = SelectorItem::Unwrap<SelectorItem>(info.This());

      try  {
        bool result = wrapper->_instance->IsSelected;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSelectedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::SelectorItem^>(info.This())) {
        return;
      }

      SelectorItem *wrapper = SelectorItem::Unwrap<SelectorItem>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsSelected = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsSelectedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::SelectorItem::IsSelectedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridViewItem *wrapper = GridViewItem::Unwrap<GridViewItem>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::GridViewItem^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapGridViewItem(::Windows::UI::Xaml::Controls::GridViewItem^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::GridViewItem^ UnwrapGridViewItem(Local<Value> value);
  };

  Persistent<FunctionTemplate> GridViewItem::s_constructorTemplate;

  v8::Local<v8::Value> WrapGridViewItem(::Windows::UI::Xaml::Controls::GridViewItem^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(GridViewItem::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::GridViewItem^ UnwrapGridViewItem(Local<Value> value) {
     return GridViewItem::Unwrap<GridViewItem>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitGridViewItem(Local<Object> exports) {
    GridViewItem::Init(exports);
  }

  class ListViewHeaderItem : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ListViewHeaderItem").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ListViewHeaderItem").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ListViewHeaderItem(::Windows::UI::Xaml::Controls::ListViewHeaderItem^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ListViewHeaderItem^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ListViewHeaderItem^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ListViewHeaderItem();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ListViewHeaderItem *wrapperInstance = new ListViewHeaderItem(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ListViewHeaderItem^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ListViewHeaderItem^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapListViewHeaderItem(winRtInstance));
    }





    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewHeaderItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewHeaderItem *wrapper = ListViewHeaderItem::Unwrap<ListViewHeaderItem>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ListViewHeaderItem^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapListViewHeaderItem(::Windows::UI::Xaml::Controls::ListViewHeaderItem^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ListViewHeaderItem^ UnwrapListViewHeaderItem(Local<Value> value);
  };

  Persistent<FunctionTemplate> ListViewHeaderItem::s_constructorTemplate;

  v8::Local<v8::Value> WrapListViewHeaderItem(::Windows::UI::Xaml::Controls::ListViewHeaderItem^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ListViewHeaderItem::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ListViewHeaderItem^ UnwrapListViewHeaderItem(Local<Value> value) {
     return ListViewHeaderItem::Unwrap<ListViewHeaderItem>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitListViewHeaderItem(Local<Object> exports) {
    ListViewHeaderItem::Init(exports);
  }

  class ListViewItem : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ListViewItem").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("templateSettings").ToLocalChecked(), TemplateSettingsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSelected").ToLocalChecked(), IsSelectedGetter, IsSelectedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isSelectedProperty").ToLocalChecked(), IsSelectedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ListViewItem").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ListViewItem(::Windows::UI::Xaml::Controls::ListViewItem^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ListViewItem^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ListViewItem^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ListViewItem();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ListViewItem *wrapperInstance = new ListViewItem(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ListViewItem^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ListViewItem^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapListViewItem(winRtInstance));
    }





    static void TemplateSettingsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This())) {
        return;
      }

      ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::ListViewItemTemplateSettings^ result = wrapper->_instance->TemplateSettings;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "ListViewItemTemplateSettings", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSelectedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::SelectorItem^>(info.This())) {
        return;
      }

      SelectorItem *wrapper = SelectorItem::Unwrap<SelectorItem>(info.This());

      try  {
        bool result = wrapper->_instance->IsSelected;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSelectedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::SelectorItem^>(info.This())) {
        return;
      }

      SelectorItem *wrapper = SelectorItem::Unwrap<SelectorItem>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsSelected = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsSelectedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::SelectorItem::IsSelectedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListViewItem *wrapper = ListViewItem::Unwrap<ListViewItem>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ListViewItem^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapListViewItem(::Windows::UI::Xaml::Controls::ListViewItem^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ListViewItem^ UnwrapListViewItem(Local<Value> value);
  };

  Persistent<FunctionTemplate> ListViewItem::s_constructorTemplate;

  v8::Local<v8::Value> WrapListViewItem(::Windows::UI::Xaml::Controls::ListViewItem^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ListViewItem::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ListViewItem^ UnwrapListViewItem(Local<Value> value) {
     return ListViewItem::Unwrap<ListViewItem>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitListViewItem(Local<Object> exports) {
    ListViewItem::Init(exports);
  }

  class ToggleMenuFlyoutItem : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ToggleMenuFlyoutItem").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isChecked").ToLocalChecked(), IsCheckedGetter, IsCheckedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("text").ToLocalChecked(), TextGetter, TextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandParameter").ToLocalChecked(), CommandParameterGetter, CommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("command").ToLocalChecked(), CommandGetter, CommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("icon").ToLocalChecked(), IconGetter, IconSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isCheckedProperty").ToLocalChecked(), IsCheckedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandParameterProperty").ToLocalChecked(), CommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandProperty").ToLocalChecked(), CommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("textProperty").ToLocalChecked(), TextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("iconProperty").ToLocalChecked(), IconPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ToggleMenuFlyoutItem").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ToggleMenuFlyoutItem(::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ToggleMenuFlyoutItem *wrapperInstance = new ToggleMenuFlyoutItem(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapToggleMenuFlyoutItem(winRtInstance));
    }





    static void IsCheckedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This())) {
        return;
      }

      ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());

      try  {
        bool result = wrapper->_instance->IsChecked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCheckedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This())) {
        return;
      }

      ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsChecked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This())) {
        return;
      }

      MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Text;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This())) {
        return;
      }

      MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Text = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This())) {
        return;
      }

      MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->CommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This())) {
        return;
      }

      MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This())) {
        return;
      }

      MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->Command;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This())) {
        return;
      }

      MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Command = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IconGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This())) {
        return;
      }

      MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::IconElement^ result = wrapper->_instance->Icon;
        info.GetReturnValue().Set(WrapIconElement(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IconSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItem^>(info.This())) {
        return;
      }

      MenuFlyoutItem *wrapper = MenuFlyoutItem::Unwrap<MenuFlyoutItem>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::IconElement^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::IconElement^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Icon = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsCheckedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem::IsCheckedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MenuFlyoutItem::CommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MenuFlyoutItem::CommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MenuFlyoutItem::TextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IconPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MenuFlyoutItem::IconProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Click::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->Click::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ToggleMenuFlyoutItem *wrapper = ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapToggleMenuFlyoutItem(::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^ UnwrapToggleMenuFlyoutItem(Local<Value> value);
  };

  Persistent<FunctionTemplate> ToggleMenuFlyoutItem::s_constructorTemplate;

  v8::Local<v8::Value> WrapToggleMenuFlyoutItem(::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ToggleMenuFlyoutItem::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem^ UnwrapToggleMenuFlyoutItem(Local<Value> value) {
     return ToggleMenuFlyoutItem::Unwrap<ToggleMenuFlyoutItem>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitToggleMenuFlyoutItem(Local<Object> exports) {
    ToggleMenuFlyoutItem::Init(exports);
  }

  class AppBarButton : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("AppBarButton").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("label").ToLocalChecked(), LabelGetter, LabelSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("icon").ToLocalChecked(), IconGetter, IconSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("labelPosition").ToLocalChecked(), LabelPositionGetter, LabelPositionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isCompact").ToLocalChecked(), IsCompactGetter, IsCompactSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dynamicOverflowOrder").ToLocalChecked(), DynamicOverflowOrderGetter, DynamicOverflowOrderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isInOverflow").ToLocalChecked(), IsInOverflowGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flyout").ToLocalChecked(), FlyoutGetter, FlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandParameter").ToLocalChecked(), CommandParameterGetter, CommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("command").ToLocalChecked(), CommandGetter, CommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clickMode").ToLocalChecked(), ClickModeGetter, ClickModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPointerOver").ToLocalChecked(), IsPointerOverGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPressed").ToLocalChecked(), IsPressedGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("iconProperty").ToLocalChecked(), IconPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isCompactProperty").ToLocalChecked(), IsCompactPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("labelProperty").ToLocalChecked(), LabelPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dynamicOverflowOrderProperty").ToLocalChecked(), DynamicOverflowOrderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isInOverflowProperty").ToLocalChecked(), IsInOverflowPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("labelPositionProperty").ToLocalChecked(), LabelPositionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flyoutProperty").ToLocalChecked(), FlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clickModeProperty").ToLocalChecked(), ClickModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandParameterProperty").ToLocalChecked(), CommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandProperty").ToLocalChecked(), CommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPointerOverProperty").ToLocalChecked(), IsPointerOverPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPressedProperty").ToLocalChecked(), IsPressedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("AppBarButton").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      AppBarButton(::Windows::UI::Xaml::Controls::AppBarButton^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::AppBarButton^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::AppBarButton^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::AppBarButton();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      AppBarButton *wrapperInstance = new AppBarButton(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::AppBarButton^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::AppBarButton^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapAppBarButton(winRtInstance));
    }





    static void LabelGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This())) {
        return;
      }

      AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Label;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LabelSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This())) {
        return;
      }

      AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Label = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IconGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This())) {
        return;
      }

      AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::IconElement^ result = wrapper->_instance->Icon;
        info.GetReturnValue().Set(WrapIconElement(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IconSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This())) {
        return;
      }

      AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::IconElement^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::IconElement^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Icon = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LabelPositionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This())) {
        return;
      }

      AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::CommandBarLabelPosition result = wrapper->_instance->LabelPosition;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LabelPositionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This())) {
        return;
      }

      AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::CommandBarLabelPosition winRtValue = static_cast<::Windows::UI::Xaml::Controls::CommandBarLabelPosition>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->LabelPosition = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsCompactGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This())) {
        return;
      }

      AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsCompact;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCompactSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This())) {
        return;
      }

      AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsCompact = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DynamicOverflowOrderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This())) {
        return;
      }

      AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());

      try  {
        int result = wrapper->_instance->DynamicOverflowOrder;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DynamicOverflowOrderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This())) {
        return;
      }

      AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->DynamicOverflowOrder = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsInOverflowGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This())) {
        return;
      }

      AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsInOverflow;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This())) {
        return;
      }

      Button *wrapper = Button::Unwrap<Button>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->Flyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Button^>(info.This())) {
        return;
      }

      Button *wrapper = Button::Unwrap<Button>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Flyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->CommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->Command;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Command = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClickModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ClickMode result = wrapper->_instance->ClickMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClickModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ClickMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ClickMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ClickMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPointerOverGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPointerOver;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPressedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPressed;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IconPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AppBarButton::IconProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsCompactPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AppBarButton::IsCompactProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LabelPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AppBarButton::LabelProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DynamicOverflowOrderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AppBarButton::DynamicOverflowOrderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsInOverflowPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AppBarButton::IsInOverflowProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LabelPositionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AppBarButton::LabelPositionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Button::FlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClickModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::ClickModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPointerOverPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPointerOverProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPressedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPressedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Click::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->Click::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarButton *wrapper = AppBarButton::Unwrap<AppBarButton>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::AppBarButton^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapAppBarButton(::Windows::UI::Xaml::Controls::AppBarButton^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::AppBarButton^ UnwrapAppBarButton(Local<Value> value);
  };

  Persistent<FunctionTemplate> AppBarButton::s_constructorTemplate;

  v8::Local<v8::Value> WrapAppBarButton(::Windows::UI::Xaml::Controls::AppBarButton^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(AppBarButton::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::AppBarButton^ UnwrapAppBarButton(Local<Value> value) {
     return AppBarButton::Unwrap<AppBarButton>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitAppBarButton(Local<Object> exports) {
    AppBarButton::Init(exports);
  }

  class AppBarToggleButton : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("AppBarToggleButton").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("label").ToLocalChecked(), LabelGetter, LabelSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("icon").ToLocalChecked(), IconGetter, IconSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("labelPosition").ToLocalChecked(), LabelPositionGetter, LabelPositionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isCompact").ToLocalChecked(), IsCompactGetter, IsCompactSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dynamicOverflowOrder").ToLocalChecked(), DynamicOverflowOrderGetter, DynamicOverflowOrderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isInOverflow").ToLocalChecked(), IsInOverflowGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isThreeState").ToLocalChecked(), IsThreeStateGetter, IsThreeStateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isChecked").ToLocalChecked(), IsCheckedGetter, IsCheckedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandParameter").ToLocalChecked(), CommandParameterGetter, CommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("command").ToLocalChecked(), CommandGetter, CommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clickMode").ToLocalChecked(), ClickModeGetter, ClickModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPointerOver").ToLocalChecked(), IsPointerOverGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPressed").ToLocalChecked(), IsPressedGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("iconProperty").ToLocalChecked(), IconPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isCompactProperty").ToLocalChecked(), IsCompactPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("labelProperty").ToLocalChecked(), LabelPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dynamicOverflowOrderProperty").ToLocalChecked(), DynamicOverflowOrderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isInOverflowProperty").ToLocalChecked(), IsInOverflowPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("labelPositionProperty").ToLocalChecked(), LabelPositionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isCheckedProperty").ToLocalChecked(), IsCheckedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isThreeStateProperty").ToLocalChecked(), IsThreeStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clickModeProperty").ToLocalChecked(), ClickModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandParameterProperty").ToLocalChecked(), CommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandProperty").ToLocalChecked(), CommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPointerOverProperty").ToLocalChecked(), IsPointerOverPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPressedProperty").ToLocalChecked(), IsPressedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("AppBarToggleButton").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      AppBarToggleButton(::Windows::UI::Xaml::Controls::AppBarToggleButton^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::AppBarToggleButton^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::AppBarToggleButton^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::AppBarToggleButton();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      AppBarToggleButton *wrapperInstance = new AppBarToggleButton(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::AppBarToggleButton^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::AppBarToggleButton^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapAppBarToggleButton(winRtInstance));
    }





    static void LabelGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This())) {
        return;
      }

      AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Label;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LabelSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This())) {
        return;
      }

      AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Label = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IconGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This())) {
        return;
      }

      AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::IconElement^ result = wrapper->_instance->Icon;
        info.GetReturnValue().Set(WrapIconElement(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IconSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::IconElement^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This())) {
        return;
      }

      AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::IconElement^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::IconElement^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Icon = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LabelPositionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This())) {
        return;
      }

      AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::CommandBarLabelPosition result = wrapper->_instance->LabelPosition;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LabelPositionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This())) {
        return;
      }

      AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::CommandBarLabelPosition winRtValue = static_cast<::Windows::UI::Xaml::Controls::CommandBarLabelPosition>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->LabelPosition = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsCompactGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This())) {
        return;
      }

      AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsCompact;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCompactSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This())) {
        return;
      }

      AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsCompact = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DynamicOverflowOrderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This())) {
        return;
      }

      AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());

      try  {
        int result = wrapper->_instance->DynamicOverflowOrder;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DynamicOverflowOrderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This())) {
        return;
      }

      AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->DynamicOverflowOrder = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsInOverflowGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This())) {
        return;
      }

      AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsInOverflow;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsThreeStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsThreeState;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsThreeStateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsThreeState = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsCheckedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        ::Platform::IBox<bool>^ result = wrapper->_instance->IsChecked;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Boolean>(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCheckedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        ::Platform::IBox<bool>^ winRtValue = ref new ::Platform::Box<bool>(Nan::To<bool>(value).FromMaybe(false));

        wrapper->_instance->IsChecked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->CommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->Command;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Command = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClickModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ClickMode result = wrapper->_instance->ClickMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClickModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ClickMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ClickMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ClickMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPointerOverGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPointerOver;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPressedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPressed;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IconPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AppBarToggleButton::IconProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsCompactPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AppBarToggleButton::IsCompactProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LabelPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AppBarToggleButton::LabelProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DynamicOverflowOrderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AppBarToggleButton::DynamicOverflowOrderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsInOverflowPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AppBarToggleButton::IsInOverflowProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LabelPositionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::AppBarToggleButton::LabelPositionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsCheckedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsCheckedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsThreeStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsThreeStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClickModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::ClickModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPointerOverPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPointerOverProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPressedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPressedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Checked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Indeterminate::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unchecked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Click::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->Checked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->Indeterminate::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->Unchecked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->Click::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::AppBarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          AppBarToggleButton *wrapper = AppBarToggleButton::Unwrap<AppBarToggleButton>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::AppBarToggleButton^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapAppBarToggleButton(::Windows::UI::Xaml::Controls::AppBarToggleButton^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::AppBarToggleButton^ UnwrapAppBarToggleButton(Local<Value> value);
  };

  Persistent<FunctionTemplate> AppBarToggleButton::s_constructorTemplate;

  v8::Local<v8::Value> WrapAppBarToggleButton(::Windows::UI::Xaml::Controls::AppBarToggleButton^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(AppBarToggleButton::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::AppBarToggleButton^ UnwrapAppBarToggleButton(Local<Value> value) {
     return AppBarToggleButton::Unwrap<AppBarToggleButton>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitAppBarToggleButton(Local<Object> exports) {
    AppBarToggleButton::Init(exports);
  }

  class GridView : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("GridView").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectionMode").ToLocalChecked(), SelectionModeGetter, SelectionModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSwipeEnabled").ToLocalChecked(), IsSwipeEnabledGetter, IsSwipeEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isItemClickEnabled").ToLocalChecked(), IsItemClickEnabledGetter, IsItemClickEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("incrementalLoadingTrigger").ToLocalChecked(), IncrementalLoadingTriggerGetter, IncrementalLoadingTriggerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("incrementalLoadingThreshold").ToLocalChecked(), IncrementalLoadingThresholdGetter, IncrementalLoadingThresholdSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDragItems").ToLocalChecked(), CanDragItemsGetter, CanDragItemsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerTransitions").ToLocalChecked(), HeaderTransitionsGetter, HeaderTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerTemplate").ToLocalChecked(), HeaderTemplateGetter, HeaderTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("header").ToLocalChecked(), HeaderGetter, HeaderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataFetchSize").ToLocalChecked(), DataFetchSizeGetter, DataFetchSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canReorderItems").ToLocalChecked(), CanReorderItemsGetter, CanReorderItemsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedItems").ToLocalChecked(), SelectedItemsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("footer").ToLocalChecked(), FooterGetter, FooterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("footerTemplate").ToLocalChecked(), FooterTemplateGetter, FooterTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("showsScrollingPlaceholders").ToLocalChecked(), ShowsScrollingPlaceholdersGetter, ShowsScrollingPlaceholdersSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("footerTransitions").ToLocalChecked(), FooterTransitionsGetter, FooterTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("reorderMode").ToLocalChecked(), ReorderModeGetter, ReorderModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isMultiSelectCheckBoxEnabled").ToLocalChecked(), IsMultiSelectCheckBoxEnabledGetter, IsMultiSelectCheckBoxEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedRanges").ToLocalChecked(), SelectedRangesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("singleSelectionFollowsFocus").ToLocalChecked(), SingleSelectionFollowsFocusGetter, SingleSelectionFollowsFocusSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("semanticZoomOwner").ToLocalChecked(), SemanticZoomOwnerGetter, SemanticZoomOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isZoomedInView").ToLocalChecked(), IsZoomedInViewGetter, IsZoomedInViewSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isActiveView").ToLocalChecked(), IsActiveViewGetter, IsActiveViewSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedValuePath").ToLocalChecked(), SelectedValuePathGetter, SelectedValuePathSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedValue").ToLocalChecked(), SelectedValueGetter, SelectedValueSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedItem").ToLocalChecked(), SelectedItemGetter, SelectedItemSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedIndex").ToLocalChecked(), SelectedIndexGetter, SelectedIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSynchronizedWithCurrentItem").ToLocalChecked(), IsSynchronizedWithCurrentItemGetter, IsSynchronizedWithCurrentItemSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsPanel").ToLocalChecked(), ItemsPanelGetter, ItemsPanelSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsSource").ToLocalChecked(), ItemsSourceGetter, ItemsSourceSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemTemplateSelector").ToLocalChecked(), ItemTemplateSelectorGetter, ItemTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemTemplate").ToLocalChecked(), ItemTemplateGetter, ItemTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerStyleSelector").ToLocalChecked(), ItemContainerStyleSelectorGetter, ItemContainerStyleSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerStyle").ToLocalChecked(), ItemContainerStyleGetter, ItemContainerStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupStyleSelector").ToLocalChecked(), GroupStyleSelectorGetter, GroupStyleSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerTransitions").ToLocalChecked(), ItemContainerTransitionsGetter, ItemContainerTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("displayMemberPath").ToLocalChecked(), DisplayMemberPathGetter, DisplayMemberPathSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerGenerator").ToLocalChecked(), ItemContainerGeneratorGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("items").ToLocalChecked(), ItemsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupStyle").ToLocalChecked(), GroupStyleGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isGrouping").ToLocalChecked(), IsGroupingGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsPanelRoot").ToLocalChecked(), ItemsPanelRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isSwipeEnabledProperty").ToLocalChecked(), IsSwipeEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragItemsProperty").ToLocalChecked(), CanDragItemsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canReorderItemsProperty").ToLocalChecked(), CanReorderItemsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataFetchSizeProperty").ToLocalChecked(), DataFetchSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerProperty").ToLocalChecked(), HeaderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerTemplateProperty").ToLocalChecked(), HeaderTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerTransitionsProperty").ToLocalChecked(), HeaderTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("incrementalLoadingThresholdProperty").ToLocalChecked(), IncrementalLoadingThresholdPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("incrementalLoadingTriggerProperty").ToLocalChecked(), IncrementalLoadingTriggerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isActiveViewProperty").ToLocalChecked(), IsActiveViewPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isItemClickEnabledProperty").ToLocalChecked(), IsItemClickEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isZoomedInViewProperty").ToLocalChecked(), IsZoomedInViewPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectionModeProperty").ToLocalChecked(), SelectionModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("semanticZoomOwnerProperty").ToLocalChecked(), SemanticZoomOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("footerProperty").ToLocalChecked(), FooterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("footerTemplateProperty").ToLocalChecked(), FooterTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("footerTransitionsProperty").ToLocalChecked(), FooterTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("showsScrollingPlaceholdersProperty").ToLocalChecked(), ShowsScrollingPlaceholdersPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("reorderModeProperty").ToLocalChecked(), ReorderModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isMultiSelectCheckBoxEnabledProperty").ToLocalChecked(), IsMultiSelectCheckBoxEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("singleSelectionFollowsFocusProperty").ToLocalChecked(), SingleSelectionFollowsFocusPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isSynchronizedWithCurrentItemProperty").ToLocalChecked(), IsSynchronizedWithCurrentItemPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedIndexProperty").ToLocalChecked(), SelectedIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedItemProperty").ToLocalChecked(), SelectedItemPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedValuePathProperty").ToLocalChecked(), SelectedValuePathPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedValueProperty").ToLocalChecked(), SelectedValuePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("displayMemberPathProperty").ToLocalChecked(), DisplayMemberPathPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("groupStyleSelectorProperty").ToLocalChecked(), GroupStyleSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isGroupingProperty").ToLocalChecked(), IsGroupingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerStyleProperty").ToLocalChecked(), ItemContainerStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerStyleSelectorProperty").ToLocalChecked(), ItemContainerStyleSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerTransitionsProperty").ToLocalChecked(), ItemContainerTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemTemplateProperty").ToLocalChecked(), ItemTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemTemplateSelectorProperty").ToLocalChecked(), ItemTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemsPanelProperty").ToLocalChecked(), ItemsPanelPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemsSourceProperty").ToLocalChecked(), ItemsSourcePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("GridView").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      GridView(::Windows::UI::Xaml::Controls::GridView^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::GridView^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::GridView^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::GridView();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      GridView *wrapperInstance = new GridView(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::GridView^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::GridView^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapGridView(winRtInstance));
    }





    static void SelectionModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ListViewSelectionMode result = wrapper->_instance->SelectionMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectionModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ListViewSelectionMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ListViewSelectionMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SelectionMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsSwipeEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsSwipeEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSwipeEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsSwipeEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsItemClickEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsItemClickEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsItemClickEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsItemClickEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IncrementalLoadingTriggerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::IncrementalLoadingTrigger result = wrapper->_instance->IncrementalLoadingTrigger;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IncrementalLoadingTriggerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::IncrementalLoadingTrigger winRtValue = static_cast<::Windows::UI::Xaml::Controls::IncrementalLoadingTrigger>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->IncrementalLoadingTrigger = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IncrementalLoadingThresholdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        double result = wrapper->_instance->IncrementalLoadingThreshold;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IncrementalLoadingThresholdSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->IncrementalLoadingThreshold = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->CanDragItems;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragItemsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDragItems = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->HeaderTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->HeaderTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Header;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Header = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataFetchSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        double result = wrapper->_instance->DataFetchSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataFetchSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->DataFetchSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanReorderItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->CanReorderItems;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanReorderItemsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanReorderItems = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Platform::Object^>^ result = wrapper->_instance->SelectedItems;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Platform::Object^>::CreateVectorWrapper(result, 
            [](::Platform::Object^ val) -> Local<Value> {
              return CreateOpaqueWrapper(val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value);
            },
            [](Local<Value> value) -> ::Platform::Object^ {
              return dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FooterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Footer;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FooterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Footer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FooterTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->FooterTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FooterTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FooterTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ShowsScrollingPlaceholdersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->ShowsScrollingPlaceholders;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ShowsScrollingPlaceholdersSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ShowsScrollingPlaceholders = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FooterTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->FooterTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FooterTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FooterTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ReorderModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ListViewReorderMode result = wrapper->_instance->ReorderMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ReorderModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ListViewReorderMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ListViewReorderMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ReorderMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsMultiSelectCheckBoxEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsMultiSelectCheckBoxEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsMultiSelectCheckBoxEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsMultiSelectCheckBoxEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedRangesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Data::ItemIndexRange^>^ result = wrapper->_instance->SelectedRanges;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Data::ItemIndexRange^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Data::ItemIndexRange^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Data", "ItemIndexRange", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Data::ItemIndexRange^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Data::ItemIndexRange^ {
              return dynamic_cast<::Windows::UI::Xaml::Data::ItemIndexRange^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SingleSelectionFollowsFocusGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->SingleSelectionFollowsFocus;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SingleSelectionFollowsFocusSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->SingleSelectionFollowsFocus = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SemanticZoomOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::SemanticZoom^ result = wrapper->_instance->SemanticZoomOwner;
        info.GetReturnValue().Set(WrapSemanticZoom(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SemanticZoomOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::SemanticZoom^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::SemanticZoom^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SemanticZoomOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsZoomedInViewGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsZoomedInView;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsZoomedInViewSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsZoomedInView = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsActiveViewGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsActiveView;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsActiveViewSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsActiveView = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedValuePathGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->SelectedValuePath;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedValuePathSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->SelectedValuePath = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedValueGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->SelectedValue;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedValueSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectedValue = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->SelectedItem;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedItemSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectedItem = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        int result = wrapper->_instance->SelectedIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SelectedIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsSynchronizedWithCurrentItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        ::Platform::IBox<bool>^ result = wrapper->_instance->IsSynchronizedWithCurrentItem;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Boolean>(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSynchronizedWithCurrentItemSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        ::Platform::IBox<bool>^ winRtValue = ref new ::Platform::Box<bool>(Nan::To<bool>(value).FromMaybe(false));

        wrapper->_instance->IsSynchronizedWithCurrentItem = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemsPanelGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ result = wrapper->_instance->ItemsPanel;
        info.GetReturnValue().Set(WrapItemsPanelTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsPanelSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemsPanel = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemsSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->ItemsSource;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsSourceSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemsSource = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ItemTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ItemTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerStyleSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::StyleSelector^ result = wrapper->_instance->ItemContainerStyleSelector;
        info.GetReturnValue().Set(WrapStyleSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerStyleSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StyleSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::StyleSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::StyleSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerStyleSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->ItemContainerStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void GroupStyleSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::GroupStyleSelector^ result = wrapper->_instance->GroupStyleSelector;
        info.GetReturnValue().Set(WrapGroupStyleSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupStyleSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::GroupStyleSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->GroupStyleSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ItemContainerTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DisplayMemberPathGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->DisplayMemberPath;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DisplayMemberPathSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->DisplayMemberPath = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerGeneratorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemContainerGenerator^ result = wrapper->_instance->ItemContainerGenerator;
        info.GetReturnValue().Set(WrapItemContainerGenerator(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemCollection^ result = wrapper->_instance->Items;
        info.GetReturnValue().Set(WrapItemCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::Foundation::Collections::IObservableVector<::Windows::UI::Xaml::Controls::GroupStyle^>^ result = wrapper->_instance->GroupStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "IObservableVector`1", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsGroupingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        bool result = wrapper->_instance->IsGrouping;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsPanelRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Panel^ result = wrapper->_instance->ItemsPanelRoot;
        info.GetReturnValue().Set(WrapPanel(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsSwipeEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::IsSwipeEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragItemsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::CanDragItemsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanReorderItemsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::CanReorderItemsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataFetchSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::DataFetchSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::HeaderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::HeaderTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::HeaderTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IncrementalLoadingThresholdPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::IncrementalLoadingThresholdProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IncrementalLoadingTriggerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::IncrementalLoadingTriggerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsActiveViewPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::IsActiveViewProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsItemClickEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::IsItemClickEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsZoomedInViewPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::IsZoomedInViewProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectionModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::SelectionModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SemanticZoomOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::SemanticZoomOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FooterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::FooterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FooterTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::FooterTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FooterTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::FooterTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ShowsScrollingPlaceholdersPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::ShowsScrollingPlaceholdersProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ReorderModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::ReorderModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsMultiSelectCheckBoxEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::IsMultiSelectCheckBoxEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SingleSelectionFollowsFocusPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::SingleSelectionFollowsFocusProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsSynchronizedWithCurrentItemPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::IsSynchronizedWithCurrentItemProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedItemPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedItemProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedValuePathPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedValuePathProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedValuePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedValueProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DisplayMemberPathPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::DisplayMemberPathProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GroupStyleSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::GroupStyleSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsGroupingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::IsGroupingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerStyleSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerStyleSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemsPanelPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemsPanelProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemsSourcePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemsSourceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"dragItemsStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragItemsStarting::add(
            ref new ::Windows::UI::Xaml::Controls::DragItemsStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::DragItemsStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapDragItemsStartingEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"itemClick", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ItemClick::add(
            ref new ::Windows::UI::Xaml::Controls::ItemClickEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::ItemClickEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapItemClickEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"containerContentChanging", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContainerContentChanging::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ListViewBase^, ::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::ListViewBase^ arg0, ::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapListViewBase(arg0);
                  wrappedArg1 = WrapContainerContentChangingEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"choosingGroupHeaderContainer", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ChoosingGroupHeaderContainer::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ListViewBase^, ::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::ListViewBase^ arg0, ::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapListViewBase(arg0);
                  wrappedArg1 = WrapChoosingGroupHeaderContainerEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"choosingItemContainer", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ChoosingItemContainer::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ListViewBase^, ::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::ListViewBase^ arg0, ::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapListViewBase(arg0);
                  wrappedArg1 = WrapChoosingItemContainerEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragItemsCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragItemsCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ListViewBase^, ::Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::ListViewBase^ arg0, ::Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapListViewBase(arg0);
                  wrappedArg1 = WrapDragItemsCompletedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SelectionChanged::add(
            ref new ::Windows::UI::Xaml::Controls::SelectionChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapSelectionChangedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        GridView *wrapper = GridView::Unwrap<GridView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"dragItemsStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"itemClick", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"containerContentChanging", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"choosingGroupHeaderContainer", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"choosingItemContainer", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragItemsCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"dragItemsStarting", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->DragItemsStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"itemClick", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->ItemClick::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"containerContentChanging", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->ContainerContentChanging::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"choosingGroupHeaderContainer", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->ChoosingGroupHeaderContainer::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"choosingItemContainer", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->ChoosingItemContainer::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragItemsCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->DragItemsCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->SelectionChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GridView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          GridView *wrapper = GridView::Unwrap<GridView>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::GridView^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapGridView(::Windows::UI::Xaml::Controls::GridView^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::GridView^ UnwrapGridView(Local<Value> value);
  };

  Persistent<FunctionTemplate> GridView::s_constructorTemplate;

  v8::Local<v8::Value> WrapGridView(::Windows::UI::Xaml::Controls::GridView^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(GridView::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::GridView^ UnwrapGridView(Local<Value> value) {
     return GridView::Unwrap<GridView>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitGridView(Local<Object> exports) {
    GridView::Init(exports);
  }

  class ListView : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ListView").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectionMode").ToLocalChecked(), SelectionModeGetter, SelectionModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSwipeEnabled").ToLocalChecked(), IsSwipeEnabledGetter, IsSwipeEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isItemClickEnabled").ToLocalChecked(), IsItemClickEnabledGetter, IsItemClickEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("incrementalLoadingTrigger").ToLocalChecked(), IncrementalLoadingTriggerGetter, IncrementalLoadingTriggerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("incrementalLoadingThreshold").ToLocalChecked(), IncrementalLoadingThresholdGetter, IncrementalLoadingThresholdSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDragItems").ToLocalChecked(), CanDragItemsGetter, CanDragItemsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerTransitions").ToLocalChecked(), HeaderTransitionsGetter, HeaderTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerTemplate").ToLocalChecked(), HeaderTemplateGetter, HeaderTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("header").ToLocalChecked(), HeaderGetter, HeaderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataFetchSize").ToLocalChecked(), DataFetchSizeGetter, DataFetchSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canReorderItems").ToLocalChecked(), CanReorderItemsGetter, CanReorderItemsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedItems").ToLocalChecked(), SelectedItemsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("footer").ToLocalChecked(), FooterGetter, FooterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("footerTemplate").ToLocalChecked(), FooterTemplateGetter, FooterTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("showsScrollingPlaceholders").ToLocalChecked(), ShowsScrollingPlaceholdersGetter, ShowsScrollingPlaceholdersSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("footerTransitions").ToLocalChecked(), FooterTransitionsGetter, FooterTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("reorderMode").ToLocalChecked(), ReorderModeGetter, ReorderModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isMultiSelectCheckBoxEnabled").ToLocalChecked(), IsMultiSelectCheckBoxEnabledGetter, IsMultiSelectCheckBoxEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedRanges").ToLocalChecked(), SelectedRangesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("singleSelectionFollowsFocus").ToLocalChecked(), SingleSelectionFollowsFocusGetter, SingleSelectionFollowsFocusSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("semanticZoomOwner").ToLocalChecked(), SemanticZoomOwnerGetter, SemanticZoomOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isZoomedInView").ToLocalChecked(), IsZoomedInViewGetter, IsZoomedInViewSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isActiveView").ToLocalChecked(), IsActiveViewGetter, IsActiveViewSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedValuePath").ToLocalChecked(), SelectedValuePathGetter, SelectedValuePathSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedValue").ToLocalChecked(), SelectedValueGetter, SelectedValueSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedItem").ToLocalChecked(), SelectedItemGetter, SelectedItemSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedIndex").ToLocalChecked(), SelectedIndexGetter, SelectedIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isSynchronizedWithCurrentItem").ToLocalChecked(), IsSynchronizedWithCurrentItemGetter, IsSynchronizedWithCurrentItemSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsPanel").ToLocalChecked(), ItemsPanelGetter, ItemsPanelSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsSource").ToLocalChecked(), ItemsSourceGetter, ItemsSourceSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemTemplateSelector").ToLocalChecked(), ItemTemplateSelectorGetter, ItemTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemTemplate").ToLocalChecked(), ItemTemplateGetter, ItemTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerStyleSelector").ToLocalChecked(), ItemContainerStyleSelectorGetter, ItemContainerStyleSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerStyle").ToLocalChecked(), ItemContainerStyleGetter, ItemContainerStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupStyleSelector").ToLocalChecked(), GroupStyleSelectorGetter, GroupStyleSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerTransitions").ToLocalChecked(), ItemContainerTransitionsGetter, ItemContainerTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("displayMemberPath").ToLocalChecked(), DisplayMemberPathGetter, DisplayMemberPathSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerGenerator").ToLocalChecked(), ItemContainerGeneratorGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("items").ToLocalChecked(), ItemsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupStyle").ToLocalChecked(), GroupStyleGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isGrouping").ToLocalChecked(), IsGroupingGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsPanelRoot").ToLocalChecked(), ItemsPanelRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isSwipeEnabledProperty").ToLocalChecked(), IsSwipeEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragItemsProperty").ToLocalChecked(), CanDragItemsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canReorderItemsProperty").ToLocalChecked(), CanReorderItemsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataFetchSizeProperty").ToLocalChecked(), DataFetchSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerProperty").ToLocalChecked(), HeaderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerTemplateProperty").ToLocalChecked(), HeaderTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerTransitionsProperty").ToLocalChecked(), HeaderTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("incrementalLoadingThresholdProperty").ToLocalChecked(), IncrementalLoadingThresholdPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("incrementalLoadingTriggerProperty").ToLocalChecked(), IncrementalLoadingTriggerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isActiveViewProperty").ToLocalChecked(), IsActiveViewPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isItemClickEnabledProperty").ToLocalChecked(), IsItemClickEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isZoomedInViewProperty").ToLocalChecked(), IsZoomedInViewPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectionModeProperty").ToLocalChecked(), SelectionModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("semanticZoomOwnerProperty").ToLocalChecked(), SemanticZoomOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("footerProperty").ToLocalChecked(), FooterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("footerTemplateProperty").ToLocalChecked(), FooterTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("footerTransitionsProperty").ToLocalChecked(), FooterTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("showsScrollingPlaceholdersProperty").ToLocalChecked(), ShowsScrollingPlaceholdersPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("reorderModeProperty").ToLocalChecked(), ReorderModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isMultiSelectCheckBoxEnabledProperty").ToLocalChecked(), IsMultiSelectCheckBoxEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("singleSelectionFollowsFocusProperty").ToLocalChecked(), SingleSelectionFollowsFocusPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isSynchronizedWithCurrentItemProperty").ToLocalChecked(), IsSynchronizedWithCurrentItemPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedIndexProperty").ToLocalChecked(), SelectedIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedItemProperty").ToLocalChecked(), SelectedItemPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedValuePathProperty").ToLocalChecked(), SelectedValuePathPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedValueProperty").ToLocalChecked(), SelectedValuePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("displayMemberPathProperty").ToLocalChecked(), DisplayMemberPathPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("groupStyleSelectorProperty").ToLocalChecked(), GroupStyleSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isGroupingProperty").ToLocalChecked(), IsGroupingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerStyleProperty").ToLocalChecked(), ItemContainerStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerStyleSelectorProperty").ToLocalChecked(), ItemContainerStyleSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerTransitionsProperty").ToLocalChecked(), ItemContainerTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemTemplateProperty").ToLocalChecked(), ItemTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemTemplateSelectorProperty").ToLocalChecked(), ItemTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemsPanelProperty").ToLocalChecked(), ItemsPanelPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemsSourceProperty").ToLocalChecked(), ItemsSourcePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ListView").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ListView(::Windows::UI::Xaml::Controls::ListView^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ListView^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ListView^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ListView();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ListView *wrapperInstance = new ListView(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ListView^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ListView^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapListView(winRtInstance));
    }





    static void SelectionModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ListViewSelectionMode result = wrapper->_instance->SelectionMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectionModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ListViewSelectionMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ListViewSelectionMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SelectionMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsSwipeEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsSwipeEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSwipeEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsSwipeEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsItemClickEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsItemClickEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsItemClickEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsItemClickEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IncrementalLoadingTriggerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::IncrementalLoadingTrigger result = wrapper->_instance->IncrementalLoadingTrigger;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IncrementalLoadingTriggerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::IncrementalLoadingTrigger winRtValue = static_cast<::Windows::UI::Xaml::Controls::IncrementalLoadingTrigger>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->IncrementalLoadingTrigger = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IncrementalLoadingThresholdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        double result = wrapper->_instance->IncrementalLoadingThreshold;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IncrementalLoadingThresholdSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->IncrementalLoadingThreshold = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->CanDragItems;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragItemsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDragItems = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->HeaderTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->HeaderTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Header;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Header = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataFetchSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        double result = wrapper->_instance->DataFetchSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataFetchSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->DataFetchSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanReorderItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->CanReorderItems;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanReorderItemsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanReorderItems = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Platform::Object^>^ result = wrapper->_instance->SelectedItems;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Platform::Object^>::CreateVectorWrapper(result, 
            [](::Platform::Object^ val) -> Local<Value> {
              return CreateOpaqueWrapper(val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value);
            },
            [](Local<Value> value) -> ::Platform::Object^ {
              return dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FooterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Footer;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FooterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Footer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FooterTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->FooterTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FooterTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FooterTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ShowsScrollingPlaceholdersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->ShowsScrollingPlaceholders;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ShowsScrollingPlaceholdersSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ShowsScrollingPlaceholders = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FooterTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->FooterTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FooterTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FooterTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ReorderModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ListViewReorderMode result = wrapper->_instance->ReorderMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ReorderModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ListViewReorderMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ListViewReorderMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ReorderMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsMultiSelectCheckBoxEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsMultiSelectCheckBoxEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsMultiSelectCheckBoxEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsMultiSelectCheckBoxEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedRangesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Data::ItemIndexRange^>^ result = wrapper->_instance->SelectedRanges;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Data::ItemIndexRange^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Data::ItemIndexRange^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Data", "ItemIndexRange", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Data::ItemIndexRange^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Data::ItemIndexRange^ {
              return dynamic_cast<::Windows::UI::Xaml::Data::ItemIndexRange^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SingleSelectionFollowsFocusGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->SingleSelectionFollowsFocus;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SingleSelectionFollowsFocusSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->SingleSelectionFollowsFocus = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SemanticZoomOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::SemanticZoom^ result = wrapper->_instance->SemanticZoomOwner;
        info.GetReturnValue().Set(WrapSemanticZoom(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SemanticZoomOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::SemanticZoom^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::SemanticZoom^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::SemanticZoom^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SemanticZoomOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsZoomedInViewGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsZoomedInView;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsZoomedInViewSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsZoomedInView = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsActiveViewGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsActiveView;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsActiveViewSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListViewBase^>(info.This())) {
        return;
      }

      ListViewBase *wrapper = ListViewBase::Unwrap<ListViewBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsActiveView = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedValuePathGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->SelectedValuePath;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedValuePathSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->SelectedValuePath = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedValueGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->SelectedValue;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedValueSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectedValue = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->SelectedItem;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedItemSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectedItem = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        int result = wrapper->_instance->SelectedIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SelectedIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsSynchronizedWithCurrentItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try  {
        ::Platform::IBox<bool>^ result = wrapper->_instance->IsSynchronizedWithCurrentItem;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Boolean>(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsSynchronizedWithCurrentItemSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::Selector^>(info.This())) {
        return;
      }

      Selector *wrapper = Selector::Unwrap<Selector>(info.This());

      try {

        ::Platform::IBox<bool>^ winRtValue = ref new ::Platform::Box<bool>(Nan::To<bool>(value).FromMaybe(false));

        wrapper->_instance->IsSynchronizedWithCurrentItem = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemsPanelGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ result = wrapper->_instance->ItemsPanel;
        info.GetReturnValue().Set(WrapItemsPanelTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsPanelSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemsPanel = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemsSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->ItemsSource;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsSourceSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemsSource = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ItemTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ItemTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerStyleSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::StyleSelector^ result = wrapper->_instance->ItemContainerStyleSelector;
        info.GetReturnValue().Set(WrapStyleSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerStyleSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StyleSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::StyleSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::StyleSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerStyleSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->ItemContainerStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void GroupStyleSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::GroupStyleSelector^ result = wrapper->_instance->GroupStyleSelector;
        info.GetReturnValue().Set(WrapGroupStyleSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupStyleSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::GroupStyleSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->GroupStyleSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ItemContainerTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DisplayMemberPathGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->DisplayMemberPath;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DisplayMemberPathSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->DisplayMemberPath = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerGeneratorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemContainerGenerator^ result = wrapper->_instance->ItemContainerGenerator;
        info.GetReturnValue().Set(WrapItemContainerGenerator(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemCollection^ result = wrapper->_instance->Items;
        info.GetReturnValue().Set(WrapItemCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::Foundation::Collections::IObservableVector<::Windows::UI::Xaml::Controls::GroupStyle^>^ result = wrapper->_instance->GroupStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "IObservableVector`1", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsGroupingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        bool result = wrapper->_instance->IsGrouping;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsPanelRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Panel^ result = wrapper->_instance->ItemsPanelRoot;
        info.GetReturnValue().Set(WrapPanel(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsSwipeEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::IsSwipeEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragItemsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::CanDragItemsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanReorderItemsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::CanReorderItemsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataFetchSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::DataFetchSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::HeaderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::HeaderTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::HeaderTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IncrementalLoadingThresholdPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::IncrementalLoadingThresholdProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IncrementalLoadingTriggerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::IncrementalLoadingTriggerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsActiveViewPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::IsActiveViewProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsItemClickEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::IsItemClickEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsZoomedInViewPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::IsZoomedInViewProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectionModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::SelectionModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SemanticZoomOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::SemanticZoomOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FooterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::FooterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FooterTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::FooterTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FooterTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::FooterTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ShowsScrollingPlaceholdersPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::ShowsScrollingPlaceholdersProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ReorderModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::ReorderModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsMultiSelectCheckBoxEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::IsMultiSelectCheckBoxEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SingleSelectionFollowsFocusPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListViewBase::SingleSelectionFollowsFocusProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsSynchronizedWithCurrentItemPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::IsSynchronizedWithCurrentItemProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedItemPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedItemProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedValuePathPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedValuePathProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedValuePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::Selector::SelectedValueProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DisplayMemberPathPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::DisplayMemberPathProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GroupStyleSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::GroupStyleSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsGroupingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::IsGroupingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerStyleSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerStyleSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemsPanelPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemsPanelProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemsSourcePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemsSourceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"dragItemsStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragItemsStarting::add(
            ref new ::Windows::UI::Xaml::Controls::DragItemsStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::DragItemsStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapDragItemsStartingEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"itemClick", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ItemClick::add(
            ref new ::Windows::UI::Xaml::Controls::ItemClickEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::ItemClickEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapItemClickEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"containerContentChanging", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContainerContentChanging::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ListViewBase^, ::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::ListViewBase^ arg0, ::Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapListViewBase(arg0);
                  wrappedArg1 = WrapContainerContentChangingEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"choosingGroupHeaderContainer", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ChoosingGroupHeaderContainer::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ListViewBase^, ::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::ListViewBase^ arg0, ::Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapListViewBase(arg0);
                  wrappedArg1 = WrapChoosingGroupHeaderContainerEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"choosingItemContainer", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ChoosingItemContainer::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ListViewBase^, ::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::ListViewBase^ arg0, ::Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapListViewBase(arg0);
                  wrappedArg1 = WrapChoosingItemContainerEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragItemsCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragItemsCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ListViewBase^, ::Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::ListViewBase^ arg0, ::Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapListViewBase(arg0);
                  wrappedArg1 = WrapDragItemsCompletedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SelectionChanged::add(
            ref new ::Windows::UI::Xaml::Controls::SelectionChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapSelectionChangedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListView *wrapper = ListView::Unwrap<ListView>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"dragItemsStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"itemClick", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"containerContentChanging", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"choosingGroupHeaderContainer", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"choosingItemContainer", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragItemsCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"dragItemsStarting", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->DragItemsStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"itemClick", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->ItemClick::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"containerContentChanging", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->ContainerContentChanging::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"choosingGroupHeaderContainer", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->ChoosingGroupHeaderContainer::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"choosingItemContainer", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->ChoosingItemContainer::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragItemsCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->DragItemsCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->SelectionChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListView^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListView *wrapper = ListView::Unwrap<ListView>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ListView^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapListView(::Windows::UI::Xaml::Controls::ListView^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ListView^ UnwrapListView(Local<Value> value);
  };

  Persistent<FunctionTemplate> ListView::s_constructorTemplate;

  v8::Local<v8::Value> WrapListView(::Windows::UI::Xaml::Controls::ListView^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ListView::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ListView^ UnwrapListView(Local<Value> value) {
     return ListView::Unwrap<ListView>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitListView(Local<Object> exports) {
    ListView::Init(exports);
  }

  class Flyout : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("Flyout").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flyoutPresenterStyle").ToLocalChecked(), FlyoutPresenterStyleGetter, FlyoutPresenterStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("placement").ToLocalChecked(), PlacementGetter, PlacementSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lightDismissOverlayMode").ToLocalChecked(), LightDismissOverlayModeGetter, LightDismissOverlayModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("target").ToLocalChecked(), TargetGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("overlayInputPassThroughElement").ToLocalChecked(), OverlayInputPassThroughElementGetter, OverlayInputPassThroughElementSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flyoutPresenterStyleProperty").ToLocalChecked(), FlyoutPresenterStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("attachedFlyoutProperty").ToLocalChecked(), AttachedFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("placementProperty").ToLocalChecked(), PlacementPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightDismissOverlayModeProperty").ToLocalChecked(), LightDismissOverlayModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("overlayInputPassThroughElementProperty").ToLocalChecked(), OverlayInputPassThroughElementPropertyGetter);


        Nan::Set(exports, Nan::New<String>("Flyout").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      Flyout(::Windows::UI::Xaml::Controls::Flyout^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::Flyout^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Flyout^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::Flyout^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::Flyout();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      Flyout *wrapperInstance = new Flyout(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Flyout^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::Flyout^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::Flyout^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapFlyout(winRtInstance));
    }





    static void FlyoutPresenterStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Flyout^>(info.This())) {
        return;
      }

      Flyout *wrapper = Flyout::Unwrap<Flyout>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->FlyoutPresenterStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlyoutPresenterStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Flyout^>(info.This())) {
        return;
      }

      Flyout *wrapper = Flyout::Unwrap<Flyout>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FlyoutPresenterStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Flyout^>(info.This())) {
        return;
      }

      Flyout *wrapper = Flyout::Unwrap<Flyout>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Flyout^>(info.This())) {
        return;
      }

      Flyout *wrapper = Flyout::Unwrap<Flyout>(info.This());

      try {

        ::Windows::UI::Xaml::UIElement^ winRtValue = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PlacementGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutPlacementMode result = wrapper->_instance->Placement;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PlacementSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Placement = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightDismissOverlayModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode result = wrapper->_instance->LightDismissOverlayMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LightDismissOverlayModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::LightDismissOverlayMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->LightDismissOverlayMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TargetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::FrameworkElement^ result = wrapper->_instance->Target;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OverlayInputPassThroughElementGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->OverlayInputPassThroughElement;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OverlayInputPassThroughElementSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->OverlayInputPassThroughElement = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Flyout::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlyoutPresenterStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Flyout::FlyoutPresenterStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AttachedFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::AttachedFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PlacementPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::PlacementProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightDismissOverlayModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::LightDismissOverlayModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OverlayInputPassThroughElementPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::OverlayInputPassThroughElementProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"closed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Flyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Flyout *wrapper = Flyout::Unwrap<Flyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Closed::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"opened", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Flyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Flyout *wrapper = Flyout::Unwrap<Flyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Opened::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"opening", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Flyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Flyout *wrapper = Flyout::Unwrap<Flyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Opening::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Flyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Flyout *wrapper = Flyout::Unwrap<Flyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Closing::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^, ::Windows::UI::Xaml::Controls::Primitives::FlyoutBaseClosingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ arg0, ::Windows::UI::Xaml::Controls::Primitives::FlyoutBaseClosingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBaseClosingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"closed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"opened", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"opening", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"closed", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Flyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Flyout *wrapper = Flyout::Unwrap<Flyout>(info.This());
          wrapper->_instance->Closed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"opened", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Flyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Flyout *wrapper = Flyout::Unwrap<Flyout>(info.This());
          wrapper->_instance->Opened::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"opening", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Flyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Flyout *wrapper = Flyout::Unwrap<Flyout>(info.This());
          wrapper->_instance->Opening::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Flyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Flyout *wrapper = Flyout::Unwrap<Flyout>(info.This());
          wrapper->_instance->Closing::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::Flyout^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapFlyout(::Windows::UI::Xaml::Controls::Flyout^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::Flyout^ UnwrapFlyout(Local<Value> value);
  };

  Persistent<FunctionTemplate> Flyout::s_constructorTemplate;

  v8::Local<v8::Value> WrapFlyout(::Windows::UI::Xaml::Controls::Flyout^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(Flyout::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::Flyout^ UnwrapFlyout(Local<Value> value) {
     return Flyout::Unwrap<Flyout>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitFlyout(Local<Object> exports) {
    Flyout::Init(exports);
  }

  class MenuFlyout : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("MenuFlyout").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "showAt", ShowAt);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("menuFlyoutPresenterStyle").ToLocalChecked(), MenuFlyoutPresenterStyleGetter, MenuFlyoutPresenterStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("items").ToLocalChecked(), ItemsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("placement").ToLocalChecked(), PlacementGetter, PlacementSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lightDismissOverlayMode").ToLocalChecked(), LightDismissOverlayModeGetter, LightDismissOverlayModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("target").ToLocalChecked(), TargetGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("overlayInputPassThroughElement").ToLocalChecked(), OverlayInputPassThroughElementGetter, OverlayInputPassThroughElementSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("menuFlyoutPresenterStyleProperty").ToLocalChecked(), MenuFlyoutPresenterStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("attachedFlyoutProperty").ToLocalChecked(), AttachedFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("placementProperty").ToLocalChecked(), PlacementPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightDismissOverlayModeProperty").ToLocalChecked(), LightDismissOverlayModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("overlayInputPassThroughElementProperty").ToLocalChecked(), OverlayInputPassThroughElementPropertyGetter);


        Nan::Set(exports, Nan::New<String>("MenuFlyout").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      MenuFlyout(::Windows::UI::Xaml::Controls::MenuFlyout^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::MenuFlyout^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyout^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::MenuFlyout^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::MenuFlyout();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      MenuFlyout *wrapperInstance = new MenuFlyout(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyout^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::MenuFlyout^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::MenuFlyout^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapMenuFlyout(winRtInstance));
    }


    static void ShowAt(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyout^>(info.This())) {
        return;
      }

      MenuFlyout *wrapper = MenuFlyout::Unwrap<MenuFlyout>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info[0])
        && NodeRT::Utils::IsPoint(info[1]))
      {
        try
        {
          ::Windows::UI::Xaml::UIElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::Foundation::Point arg1 = NodeRT::Utils::PointFromJs(info[1]);
          
          wrapper->_instance->ShowAt(arg0, arg1);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void MenuFlyoutPresenterStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyout^>(info.This())) {
        return;
      }

      MenuFlyout *wrapper = MenuFlyout::Unwrap<MenuFlyout>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->MenuFlyoutPresenterStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MenuFlyoutPresenterStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyout^>(info.This())) {
        return;
      }

      MenuFlyout *wrapper = MenuFlyout::Unwrap<MenuFlyout>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->MenuFlyoutPresenterStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyout^>(info.This())) {
        return;
      }

      MenuFlyout *wrapper = MenuFlyout::Unwrap<MenuFlyout>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>^ result = wrapper->_instance->Items;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^ val) -> Local<Value> {
              return WrapMenuFlyoutItemBase(val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Controls::MenuFlyoutItemBase^ {
              return UnwrapMenuFlyoutItemBase(value);
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PlacementGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutPlacementMode result = wrapper->_instance->Placement;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PlacementSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Placement = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightDismissOverlayModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode result = wrapper->_instance->LightDismissOverlayMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LightDismissOverlayModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::LightDismissOverlayMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->LightDismissOverlayMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TargetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::FrameworkElement^ result = wrapper->_instance->Target;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OverlayInputPassThroughElementGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->OverlayInputPassThroughElement;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OverlayInputPassThroughElementSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->OverlayInputPassThroughElement = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void MenuFlyoutPresenterStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::MenuFlyout::MenuFlyoutPresenterStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AttachedFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::AttachedFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PlacementPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::PlacementProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightDismissOverlayModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::LightDismissOverlayModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OverlayInputPassThroughElementPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::OverlayInputPassThroughElementProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"closed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyout *wrapper = MenuFlyout::Unwrap<MenuFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Closed::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"opened", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyout *wrapper = MenuFlyout::Unwrap<MenuFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Opened::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"opening", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyout *wrapper = MenuFlyout::Unwrap<MenuFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Opening::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        MenuFlyout *wrapper = MenuFlyout::Unwrap<MenuFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Closing::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^, ::Windows::UI::Xaml::Controls::Primitives::FlyoutBaseClosingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ arg0, ::Windows::UI::Xaml::Controls::Primitives::FlyoutBaseClosingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBaseClosingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"closed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"opened", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"opening", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"closed", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyout *wrapper = MenuFlyout::Unwrap<MenuFlyout>(info.This());
          wrapper->_instance->Closed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"opened", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyout *wrapper = MenuFlyout::Unwrap<MenuFlyout>(info.This());
          wrapper->_instance->Opened::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"opening", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyout *wrapper = MenuFlyout::Unwrap<MenuFlyout>(info.This());
          wrapper->_instance->Opening::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::MenuFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          MenuFlyout *wrapper = MenuFlyout::Unwrap<MenuFlyout>(info.This());
          wrapper->_instance->Closing::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::MenuFlyout^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapMenuFlyout(::Windows::UI::Xaml::Controls::MenuFlyout^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::MenuFlyout^ UnwrapMenuFlyout(Local<Value> value);
  };

  Persistent<FunctionTemplate> MenuFlyout::s_constructorTemplate;

  v8::Local<v8::Value> WrapMenuFlyout(::Windows::UI::Xaml::Controls::MenuFlyout^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(MenuFlyout::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::MenuFlyout^ UnwrapMenuFlyout(Local<Value> value) {
     return MenuFlyout::Unwrap<MenuFlyout>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitMenuFlyout(Local<Object> exports) {
    MenuFlyout::Init(exports);
  }

  class WebViewBrush : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("WebViewBrush").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "redraw", Redraw);
            Nan::SetPrototypeMethod(localRef, "setSource", SetSource);
          



          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("sourceName").ToLocalChecked(), SourceNameGetter, SourceNameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("stretch").ToLocalChecked(), StretchGetter, StretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("alignmentY").ToLocalChecked(), AlignmentYGetter, AlignmentYSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("alignmentX").ToLocalChecked(), AlignmentXGetter, AlignmentXSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform").ToLocalChecked(), TransformGetter, TransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("relativeTransform").ToLocalChecked(), RelativeTransformGetter, RelativeTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("sourceNameProperty").ToLocalChecked(), SourceNamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("alignmentXProperty").ToLocalChecked(), AlignmentXPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("alignmentYProperty").ToLocalChecked(), AlignmentYPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("stretchProperty").ToLocalChecked(), StretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("relativeTransformProperty").ToLocalChecked(), RelativeTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transformProperty").ToLocalChecked(), TransformPropertyGetter);


        Nan::Set(exports, Nan::New<String>("WebViewBrush").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      WebViewBrush(::Windows::UI::Xaml::Controls::WebViewBrush^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::WebViewBrush^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewBrush^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::WebViewBrush^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::WebViewBrush();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      WebViewBrush *wrapperInstance = new WebViewBrush(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewBrush^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::WebViewBrush^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::WebViewBrush^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapWebViewBrush(winRtInstance));
    }


    static void Redraw(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewBrush^>(info.This())) {
        return;
      }

      WebViewBrush *wrapper = WebViewBrush::Unwrap<WebViewBrush>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          wrapper->_instance->Redraw();
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void SetSource(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewBrush^>(info.This())) {
        return;
      }

      WebViewBrush *wrapper = WebViewBrush::Unwrap<WebViewBrush>(info.This());

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebView^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::Controls::WebView^ arg0 = UnwrapWebView(info[0]);
          
          wrapper->_instance->SetSource(arg0);
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void SourceNameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewBrush^>(info.This())) {
        return;
      }

      WebViewBrush *wrapper = WebViewBrush::Unwrap<WebViewBrush>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->SourceName;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SourceNameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::WebViewBrush^>(info.This())) {
        return;
      }

      WebViewBrush *wrapper = WebViewBrush::Unwrap<WebViewBrush>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->SourceName = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::TileBrush^>(info.This())) {
        return;
      }

      TileBrush *wrapper = TileBrush::Unwrap<TileBrush>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Stretch result = wrapper->_instance->Stretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::TileBrush^>(info.This())) {
        return;
      }

      TileBrush *wrapper = TileBrush::Unwrap<TileBrush>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Stretch winRtValue = static_cast<::Windows::UI::Xaml::Media::Stretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Stretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AlignmentYGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::TileBrush^>(info.This())) {
        return;
      }

      TileBrush *wrapper = TileBrush::Unwrap<TileBrush>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::AlignmentY result = wrapper->_instance->AlignmentY;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AlignmentYSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::TileBrush^>(info.This())) {
        return;
      }

      TileBrush *wrapper = TileBrush::Unwrap<TileBrush>(info.This());

      try {

        ::Windows::UI::Xaml::Media::AlignmentY winRtValue = static_cast<::Windows::UI::Xaml::Media::AlignmentY>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->AlignmentY = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AlignmentXGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::TileBrush^>(info.This())) {
        return;
      }

      TileBrush *wrapper = TileBrush::Unwrap<TileBrush>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::AlignmentX result = wrapper->_instance->AlignmentX;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AlignmentXSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::TileBrush^>(info.This())) {
        return;
      }

      TileBrush *wrapper = TileBrush::Unwrap<TileBrush>(info.This());

      try {

        ::Windows::UI::Xaml::Media::AlignmentX winRtValue = static_cast<::Windows::UI::Xaml::Media::AlignmentX>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->AlignmentX = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(info.This())) {
        return;
      }

      Brush *wrapper = Brush::Unwrap<Brush>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->Transform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(info.This())) {
        return;
      }

      Brush *wrapper = Brush::Unwrap<Brush>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RelativeTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(info.This())) {
        return;
      }

      Brush *wrapper = Brush::Unwrap<Brush>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RelativeTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RelativeTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(info.This())) {
        return;
      }

      Brush *wrapper = Brush::Unwrap<Brush>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RelativeTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(info.This())) {
        return;
      }

      Brush *wrapper = Brush::Unwrap<Brush>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(info.This())) {
        return;
      }

      Brush *wrapper = Brush::Unwrap<Brush>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void SourceNamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::WebViewBrush::SourceNameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AlignmentXPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Media::TileBrush::AlignmentXProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AlignmentYPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Media::TileBrush::AlignmentYProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Media::TileBrush::StretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Media::Brush::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RelativeTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Media::Brush::RelativeTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Media::Brush::TransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    private:
      ::Windows::UI::Xaml::Controls::WebViewBrush^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapWebViewBrush(::Windows::UI::Xaml::Controls::WebViewBrush^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::WebViewBrush^ UnwrapWebViewBrush(Local<Value> value);
  };

  Persistent<FunctionTemplate> WebViewBrush::s_constructorTemplate;

  v8::Local<v8::Value> WrapWebViewBrush(::Windows::UI::Xaml::Controls::WebViewBrush^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(WebViewBrush::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::WebViewBrush^ UnwrapWebViewBrush(Local<Value> value) {
     return WebViewBrush::Unwrap<WebViewBrush>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitWebViewBrush(Local<Object> exports) {
    WebViewBrush::Init(exports);
  }

  class InkToolbarIsStencilButtonCheckedChangedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("InkToolbarIsStencilButtonCheckedChangedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("stencilButton").ToLocalChecked(), StencilButtonGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("stencilKind").ToLocalChecked(), StencilKindGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("InkToolbarIsStencilButtonCheckedChangedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      InkToolbarIsStencilButtonCheckedChangedEventArgs(::Windows::UI::Xaml::Controls::InkToolbarIsStencilButtonCheckedChangedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::InkToolbarIsStencilButtonCheckedChangedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarIsStencilButtonCheckedChangedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarIsStencilButtonCheckedChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::InkToolbarIsStencilButtonCheckedChangedEventArgs();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      InkToolbarIsStencilButtonCheckedChangedEventArgs *wrapperInstance = new InkToolbarIsStencilButtonCheckedChangedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarIsStencilButtonCheckedChangedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::InkToolbarIsStencilButtonCheckedChangedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarIsStencilButtonCheckedChangedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapInkToolbarIsStencilButtonCheckedChangedEventArgs(winRtInstance));
    }





    static void StencilButtonGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarIsStencilButtonCheckedChangedEventArgs^>(info.This())) {
        return;
      }

      InkToolbarIsStencilButtonCheckedChangedEventArgs *wrapper = InkToolbarIsStencilButtonCheckedChangedEventArgs::Unwrap<InkToolbarIsStencilButtonCheckedChangedEventArgs>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::InkToolbarStencilButton^ result = wrapper->_instance->StencilButton;
        info.GetReturnValue().Set(WrapInkToolbarStencilButton(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StencilKindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarIsStencilButtonCheckedChangedEventArgs^>(info.This())) {
        return;
      }

      InkToolbarIsStencilButtonCheckedChangedEventArgs *wrapper = InkToolbarIsStencilButtonCheckedChangedEventArgs::Unwrap<InkToolbarIsStencilButtonCheckedChangedEventArgs>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::InkToolbarStencilKind result = wrapper->_instance->StencilKind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::InkToolbarIsStencilButtonCheckedChangedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapInkToolbarIsStencilButtonCheckedChangedEventArgs(::Windows::UI::Xaml::Controls::InkToolbarIsStencilButtonCheckedChangedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::InkToolbarIsStencilButtonCheckedChangedEventArgs^ UnwrapInkToolbarIsStencilButtonCheckedChangedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> InkToolbarIsStencilButtonCheckedChangedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapInkToolbarIsStencilButtonCheckedChangedEventArgs(::Windows::UI::Xaml::Controls::InkToolbarIsStencilButtonCheckedChangedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(InkToolbarIsStencilButtonCheckedChangedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::InkToolbarIsStencilButtonCheckedChangedEventArgs^ UnwrapInkToolbarIsStencilButtonCheckedChangedEventArgs(Local<Value> value) {
     return InkToolbarIsStencilButtonCheckedChangedEventArgs::Unwrap<InkToolbarIsStencilButtonCheckedChangedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitInkToolbarIsStencilButtonCheckedChangedEventArgs(Local<Object> exports) {
    InkToolbarIsStencilButtonCheckedChangedEventArgs::Init(exports);
  }

  class InkToolbarCustomPen : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("InkToolbarCustomPen").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "createInkDrawingAttributes", CreateInkDrawingAttributes);
            Nan::SetPrototypeMethod(localRef, "createInkDrawingAttributesCore", CreateInkDrawingAttributesCore);
          



          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("InkToolbarCustomPen").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      InkToolbarCustomPen(::Windows::UI::Xaml::Controls::InkToolbarCustomPen^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::InkToolbarCustomPen^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPen^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarCustomPen^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      InkToolbarCustomPen *wrapperInstance = new InkToolbarCustomPen(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPen^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::InkToolbarCustomPen^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarCustomPen^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapInkToolbarCustomPen(winRtInstance));
    }


    static void CreateInkDrawingAttributes(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPen^>(info.This())) {
        return;
      }

      InkToolbarCustomPen *wrapper = InkToolbarCustomPen::Unwrap<InkToolbarCustomPen>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(info[0])
        && info[1]->IsNumber())
      {
        try
        {
          ::Windows::UI::Xaml::Media::Brush^ arg0 = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(info[0]));
          double arg1 = Nan::To<double>(info[1]).FromMaybe(0.0);
          
          ::Windows::UI::Input::Inking::InkDrawingAttributes^ result;
          result = wrapper->_instance->CreateInkDrawingAttributes(arg0, arg1);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Input.Inking", "InkDrawingAttributes", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void CreateInkDrawingAttributesCore(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPen^>(info.This())) {
        return;
      }

      InkToolbarCustomPen *wrapper = InkToolbarCustomPen::Unwrap<InkToolbarCustomPen>(info.This());

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(info[0])
        && info[1]->IsNumber())
      {
        try
        {
          ::Windows::UI::Xaml::Media::Brush^ arg0 = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(info[0]));
          double arg1 = Nan::To<double>(info[1]).FromMaybe(0.0);
          
          ::Windows::UI::Input::Inking::InkDrawingAttributes^ result;
          result = wrapper->_instance->CreateInkDrawingAttributesCore(arg0, arg1);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Input.Inking", "InkDrawingAttributes", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::InkToolbarCustomPen^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapInkToolbarCustomPen(::Windows::UI::Xaml::Controls::InkToolbarCustomPen^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::InkToolbarCustomPen^ UnwrapInkToolbarCustomPen(Local<Value> value);
  };

  Persistent<FunctionTemplate> InkToolbarCustomPen::s_constructorTemplate;

  v8::Local<v8::Value> WrapInkToolbarCustomPen(::Windows::UI::Xaml::Controls::InkToolbarCustomPen^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(InkToolbarCustomPen::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::InkToolbarCustomPen^ UnwrapInkToolbarCustomPen(Local<Value> value) {
     return InkToolbarCustomPen::Unwrap<InkToolbarCustomPen>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitInkToolbarCustomPen(Local<Object> exports) {
    InkToolbarCustomPen::Init(exports);
  }

  class InkToolbar : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("InkToolbar").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "getToolButton", GetToolButton);
            Nan::SetPrototypeMethod(localRef, "getToggleButton", GetToggleButton);
            Nan::SetPrototypeMethod(localRef, "getMenuButton", GetMenuButton);
          


          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("targetInkCanvas").ToLocalChecked(), TargetInkCanvasGetter, TargetInkCanvasSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRulerButtonChecked").ToLocalChecked(), IsRulerButtonCheckedGetter, IsRulerButtonCheckedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("initialControls").ToLocalChecked(), InitialControlsGetter, InitialControlsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("activeTool").ToLocalChecked(), ActiveToolGetter, ActiveToolSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("children").ToLocalChecked(), ChildrenGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("inkDrawingAttributes").ToLocalChecked(), InkDrawingAttributesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("orientation").ToLocalChecked(), OrientationGetter, OrientationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isStencilButtonChecked").ToLocalChecked(), IsStencilButtonCheckedGetter, IsStencilButtonCheckedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("buttonFlyoutPlacement").ToLocalChecked(), ButtonFlyoutPlacementGetter, ButtonFlyoutPlacementSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("activeToolProperty").ToLocalChecked(), ActiveToolPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("childrenProperty").ToLocalChecked(), ChildrenPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("initialControlsProperty").ToLocalChecked(), InitialControlsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("inkDrawingAttributesProperty").ToLocalChecked(), InkDrawingAttributesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRulerButtonCheckedProperty").ToLocalChecked(), IsRulerButtonCheckedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("targetInkCanvasProperty").ToLocalChecked(), TargetInkCanvasPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("buttonFlyoutPlacementProperty").ToLocalChecked(), ButtonFlyoutPlacementPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isStencilButtonCheckedProperty").ToLocalChecked(), IsStencilButtonCheckedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("orientationProperty").ToLocalChecked(), OrientationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("InkToolbar").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      InkToolbar(::Windows::UI::Xaml::Controls::InkToolbar^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::InkToolbar^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbar^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::InkToolbar();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      InkToolbar *wrapperInstance = new InkToolbar(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::InkToolbar^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbar^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapInkToolbar(winRtInstance));
    }


    static void GetToolButton(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This())) {
        return;
      }

      InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());

      if (info.Length() == 1
        && info[0]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::Controls::InkToolbarTool arg0 = static_cast<::Windows::UI::Xaml::Controls::InkToolbarTool>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::InkToolbarToolButton^ result;
          result = wrapper->_instance->GetToolButton(arg0);
          info.GetReturnValue().Set(WrapInkToolbarToolButton(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetToggleButton(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This())) {
        return;
      }

      InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());

      if (info.Length() == 1
        && info[0]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::Controls::InkToolbarToggle arg0 = static_cast<::Windows::UI::Xaml::Controls::InkToolbarToggle>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::InkToolbarToggleButton^ result;
          result = wrapper->_instance->GetToggleButton(arg0);
          info.GetReturnValue().Set(WrapInkToolbarToggleButton(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetMenuButton(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This())) {
        return;
      }

      InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());

      if (info.Length() == 1
        && info[0]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::Controls::InkToolbarMenuKind arg0 = static_cast<::Windows::UI::Xaml::Controls::InkToolbarMenuKind>(Nan::To<int32_t>(info[0]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::InkToolbarMenuButton^ result;
          result = wrapper->_instance->GetMenuButton(arg0);
          info.GetReturnValue().Set(WrapInkToolbarMenuButton(result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void TargetInkCanvasGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This())) {
        return;
      }

      InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::InkCanvas^ result = wrapper->_instance->TargetInkCanvas;
        info.GetReturnValue().Set(WrapInkCanvas(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TargetInkCanvasSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkCanvas^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This())) {
        return;
      }

      InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::InkCanvas^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::InkCanvas^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->TargetInkCanvas = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRulerButtonCheckedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This())) {
        return;
      }

      InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());

      try  {
        bool result = wrapper->_instance->IsRulerButtonChecked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRulerButtonCheckedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This())) {
        return;
      }

      InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRulerButtonChecked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void InitialControlsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This())) {
        return;
      }

      InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::InkToolbarInitialControls result = wrapper->_instance->InitialControls;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void InitialControlsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This())) {
        return;
      }

      InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::InkToolbarInitialControls winRtValue = static_cast<::Windows::UI::Xaml::Controls::InkToolbarInitialControls>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->InitialControls = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ActiveToolGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This())) {
        return;
      }

      InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::InkToolbarToolButton^ result = wrapper->_instance->ActiveTool;
        info.GetReturnValue().Set(WrapInkToolbarToolButton(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActiveToolSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This())) {
        return;
      }

      InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::InkToolbarToolButton^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ActiveTool = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ChildrenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This())) {
        return;
      }

      InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObjectCollection^ result = wrapper->_instance->Children;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObjectCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void InkDrawingAttributesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This())) {
        return;
      }

      InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());

      try  {
        ::Windows::UI::Input::Inking::InkDrawingAttributes^ result = wrapper->_instance->InkDrawingAttributes;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Input.Inking", "InkDrawingAttributes", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OrientationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This())) {
        return;
      }

      InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Orientation result = wrapper->_instance->Orientation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OrientationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This())) {
        return;
      }

      InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Orientation winRtValue = static_cast<::Windows::UI::Xaml::Controls::Orientation>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Orientation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsStencilButtonCheckedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This())) {
        return;
      }

      InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());

      try  {
        bool result = wrapper->_instance->IsStencilButtonChecked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsStencilButtonCheckedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This())) {
        return;
      }

      InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsStencilButtonChecked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ButtonFlyoutPlacementGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This())) {
        return;
      }

      InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::InkToolbarButtonFlyoutPlacement result = wrapper->_instance->ButtonFlyoutPlacement;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ButtonFlyoutPlacementSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This())) {
        return;
      }

      InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::InkToolbarButtonFlyoutPlacement winRtValue = static_cast<::Windows::UI::Xaml::Controls::InkToolbarButtonFlyoutPlacement>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ButtonFlyoutPlacement = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ActiveToolPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbar::ActiveToolProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ChildrenPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbar::ChildrenProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void InitialControlsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbar::InitialControlsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void InkDrawingAttributesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbar::InkDrawingAttributesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRulerButtonCheckedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbar::IsRulerButtonCheckedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TargetInkCanvasPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbar::TargetInkCanvasProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ButtonFlyoutPlacementPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbar::ButtonFlyoutPlacementProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsStencilButtonCheckedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbar::IsStencilButtonCheckedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OrientationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbar::OrientationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"activeToolChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ActiveToolChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::InkToolbar^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::InkToolbar^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapInkToolbar(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"eraseAllClicked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->EraseAllClicked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::InkToolbar^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::InkToolbar^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapInkToolbar(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"inkDrawingAttributesChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->InkDrawingAttributesChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::InkToolbar^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::InkToolbar^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapInkToolbar(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isRulerButtonCheckedChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsRulerButtonCheckedChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::InkToolbar^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::InkToolbar^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapInkToolbar(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isStencilButtonCheckedChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsStencilButtonCheckedChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::InkToolbar^, ::Windows::UI::Xaml::Controls::InkToolbarIsStencilButtonCheckedChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::InkToolbar^ arg0, ::Windows::UI::Xaml::Controls::InkToolbarIsStencilButtonCheckedChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapInkToolbar(arg0);
                  wrappedArg1 = WrapInkToolbarIsStencilButtonCheckedChangedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"activeToolChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"eraseAllClicked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"inkDrawingAttributesChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isRulerButtonCheckedChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isStencilButtonCheckedChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"activeToolChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->ActiveToolChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"eraseAllClicked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->EraseAllClicked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"inkDrawingAttributesChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->InkDrawingAttributesChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isRulerButtonCheckedChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->IsRulerButtonCheckedChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isStencilButtonCheckedChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->IsStencilButtonCheckedChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbar^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbar *wrapper = InkToolbar::Unwrap<InkToolbar>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::InkToolbar^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapInkToolbar(::Windows::UI::Xaml::Controls::InkToolbar^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::InkToolbar^ UnwrapInkToolbar(Local<Value> value);
  };

  Persistent<FunctionTemplate> InkToolbar::s_constructorTemplate;

  v8::Local<v8::Value> WrapInkToolbar(::Windows::UI::Xaml::Controls::InkToolbar^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(InkToolbar::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::InkToolbar^ UnwrapInkToolbar(Local<Value> value) {
     return InkToolbar::Unwrap<InkToolbar>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitInkToolbar(Local<Object> exports) {
    InkToolbar::Init(exports);
  }

  class InkToolbarPenConfigurationControl : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("InkToolbarPenConfigurationControl").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("penButton").ToLocalChecked(), PenButtonGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("penButtonProperty").ToLocalChecked(), PenButtonPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("InkToolbarPenConfigurationControl").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      InkToolbarPenConfigurationControl(::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      InkToolbarPenConfigurationControl *wrapperInstance = new InkToolbarPenConfigurationControl(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapInkToolbarPenConfigurationControl(winRtInstance));
    }





    static void PenButtonGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This())) {
        return;
      }

      InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::InkToolbarPenButton^ result = wrapper->_instance->PenButton;
        info.GetReturnValue().Set(WrapInkToolbarPenButton(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void PenButtonPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl::PenButtonProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenConfigurationControl *wrapper = InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapInkToolbarPenConfigurationControl(::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^ UnwrapInkToolbarPenConfigurationControl(Local<Value> value);
  };

  Persistent<FunctionTemplate> InkToolbarPenConfigurationControl::s_constructorTemplate;

  v8::Local<v8::Value> WrapInkToolbarPenConfigurationControl(::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(InkToolbarPenConfigurationControl::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl^ UnwrapInkToolbarPenConfigurationControl(Local<Value> value) {
     return InkToolbarPenConfigurationControl::Unwrap<InkToolbarPenConfigurationControl>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitInkToolbarPenConfigurationControl(Local<Object> exports) {
    InkToolbarPenConfigurationControl::Init(exports);
  }

  class InkToolbarFlyoutItem : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("InkToolbarFlyoutItem").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter, KindSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isChecked").ToLocalChecked(), IsCheckedGetter, IsCheckedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandParameter").ToLocalChecked(), CommandParameterGetter, CommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("command").ToLocalChecked(), CommandGetter, CommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clickMode").ToLocalChecked(), ClickModeGetter, ClickModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPointerOver").ToLocalChecked(), IsPointerOverGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPressed").ToLocalChecked(), IsPressedGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isCheckedProperty").ToLocalChecked(), IsCheckedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("kindProperty").ToLocalChecked(), KindPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clickModeProperty").ToLocalChecked(), ClickModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandParameterProperty").ToLocalChecked(), CommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandProperty").ToLocalChecked(), CommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPointerOverProperty").ToLocalChecked(), IsPointerOverPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPressedProperty").ToLocalChecked(), IsPressedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("InkToolbarFlyoutItem").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      InkToolbarFlyoutItem(::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      InkToolbarFlyoutItem *wrapperInstance = new InkToolbarFlyoutItem(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapInkToolbarFlyoutItem(winRtInstance));
    }





    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This())) {
        return;
      }

      InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::InkToolbarFlyoutItemKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KindSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This())) {
        return;
      }

      InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::InkToolbarFlyoutItemKind winRtValue = static_cast<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItemKind>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Kind = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsCheckedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This())) {
        return;
      }

      InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());

      try  {
        bool result = wrapper->_instance->IsChecked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCheckedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This())) {
        return;
      }

      InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsChecked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->CommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->Command;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Command = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClickModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ClickMode result = wrapper->_instance->ClickMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClickModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ClickMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ClickMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ClickMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPointerOverGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPointerOver;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPressedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPressed;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsCheckedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem::IsCheckedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KindPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem::KindProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClickModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::ClickModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPointerOverPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPointerOverProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPressedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPressedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Checked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapInkToolbarFlyoutItem(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unchecked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapInkToolbarFlyoutItem(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Click::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->Checked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->Unchecked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->Click::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarFlyoutItem *wrapper = InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapInkToolbarFlyoutItem(::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^ UnwrapInkToolbarFlyoutItem(Local<Value> value);
  };

  Persistent<FunctionTemplate> InkToolbarFlyoutItem::s_constructorTemplate;

  v8::Local<v8::Value> WrapInkToolbarFlyoutItem(::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(InkToolbarFlyoutItem::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::InkToolbarFlyoutItem^ UnwrapInkToolbarFlyoutItem(Local<Value> value) {
     return InkToolbarFlyoutItem::Unwrap<InkToolbarFlyoutItem>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitInkToolbarFlyoutItem(Local<Object> exports) {
    InkToolbarFlyoutItem::Init(exports);
  }

  class InkToolbarMenuButton : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("InkToolbarMenuButton").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isExtensionGlyphShown").ToLocalChecked(), IsExtensionGlyphShownGetter, IsExtensionGlyphShownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("menuKind").ToLocalChecked(), MenuKindGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isThreeState").ToLocalChecked(), IsThreeStateGetter, IsThreeStateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isChecked").ToLocalChecked(), IsCheckedGetter, IsCheckedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandParameter").ToLocalChecked(), CommandParameterGetter, CommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("command").ToLocalChecked(), CommandGetter, CommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clickMode").ToLocalChecked(), ClickModeGetter, ClickModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPointerOver").ToLocalChecked(), IsPointerOverGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPressed").ToLocalChecked(), IsPressedGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isExtensionGlyphShownProperty").ToLocalChecked(), IsExtensionGlyphShownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isCheckedProperty").ToLocalChecked(), IsCheckedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isThreeStateProperty").ToLocalChecked(), IsThreeStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clickModeProperty").ToLocalChecked(), ClickModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandParameterProperty").ToLocalChecked(), CommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandProperty").ToLocalChecked(), CommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPointerOverProperty").ToLocalChecked(), IsPointerOverPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPressedProperty").ToLocalChecked(), IsPressedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("InkToolbarMenuButton").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      InkToolbarMenuButton(::Windows::UI::Xaml::Controls::InkToolbarMenuButton^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::InkToolbarMenuButton^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarMenuButton^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      InkToolbarMenuButton *wrapperInstance = new InkToolbarMenuButton(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::InkToolbarMenuButton^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarMenuButton^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapInkToolbarMenuButton(winRtInstance));
    }





    static void IsExtensionGlyphShownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This())) {
        return;
      }

      InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsExtensionGlyphShown;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsExtensionGlyphShownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This())) {
        return;
      }

      InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsExtensionGlyphShown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MenuKindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This())) {
        return;
      }

      InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::InkToolbarMenuKind result = wrapper->_instance->MenuKind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsThreeStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsThreeState;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsThreeStateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsThreeState = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsCheckedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        ::Platform::IBox<bool>^ result = wrapper->_instance->IsChecked;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Boolean>(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCheckedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        ::Platform::IBox<bool>^ winRtValue = ref new ::Platform::Box<bool>(Nan::To<bool>(value).FromMaybe(false));

        wrapper->_instance->IsChecked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->CommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->Command;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Command = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClickModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ClickMode result = wrapper->_instance->ClickMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClickModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ClickMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ClickMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ClickMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPointerOverGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPointerOver;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPressedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPressed;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsExtensionGlyphShownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarMenuButton::IsExtensionGlyphShownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsCheckedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsCheckedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsThreeStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsThreeStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClickModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::ClickModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPointerOverPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPointerOverProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPressedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPressedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Checked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Indeterminate::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unchecked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Click::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->Checked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->Indeterminate::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->Unchecked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->Click::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::InkToolbarMenuButton^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapInkToolbarMenuButton(::Windows::UI::Xaml::Controls::InkToolbarMenuButton^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::InkToolbarMenuButton^ UnwrapInkToolbarMenuButton(Local<Value> value);
  };

  Persistent<FunctionTemplate> InkToolbarMenuButton::s_constructorTemplate;

  v8::Local<v8::Value> WrapInkToolbarMenuButton(::Windows::UI::Xaml::Controls::InkToolbarMenuButton^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(InkToolbarMenuButton::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::InkToolbarMenuButton^ UnwrapInkToolbarMenuButton(Local<Value> value) {
     return InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitInkToolbarMenuButton(Local<Object> exports) {
    InkToolbarMenuButton::Init(exports);
  }

  class InkToolbarStencilButton : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("InkToolbarStencilButton").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedStencil").ToLocalChecked(), SelectedStencilGetter, SelectedStencilSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRulerItemVisible").ToLocalChecked(), IsRulerItemVisibleGetter, IsRulerItemVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isProtractorItemVisible").ToLocalChecked(), IsProtractorItemVisibleGetter, IsProtractorItemVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("protractor").ToLocalChecked(), ProtractorGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("ruler").ToLocalChecked(), RulerGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isExtensionGlyphShown").ToLocalChecked(), IsExtensionGlyphShownGetter, IsExtensionGlyphShownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("menuKind").ToLocalChecked(), MenuKindGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isThreeState").ToLocalChecked(), IsThreeStateGetter, IsThreeStateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isChecked").ToLocalChecked(), IsCheckedGetter, IsCheckedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandParameter").ToLocalChecked(), CommandParameterGetter, CommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("command").ToLocalChecked(), CommandGetter, CommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clickMode").ToLocalChecked(), ClickModeGetter, ClickModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPointerOver").ToLocalChecked(), IsPointerOverGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPressed").ToLocalChecked(), IsPressedGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isProtractorItemVisibleProperty").ToLocalChecked(), IsProtractorItemVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRulerItemVisibleProperty").ToLocalChecked(), IsRulerItemVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("protractorProperty").ToLocalChecked(), ProtractorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rulerProperty").ToLocalChecked(), RulerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedStencilProperty").ToLocalChecked(), SelectedStencilPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isExtensionGlyphShownProperty").ToLocalChecked(), IsExtensionGlyphShownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isCheckedProperty").ToLocalChecked(), IsCheckedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isThreeStateProperty").ToLocalChecked(), IsThreeStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clickModeProperty").ToLocalChecked(), ClickModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandParameterProperty").ToLocalChecked(), CommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandProperty").ToLocalChecked(), CommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPointerOverProperty").ToLocalChecked(), IsPointerOverPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPressedProperty").ToLocalChecked(), IsPressedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("InkToolbarStencilButton").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      InkToolbarStencilButton(::Windows::UI::Xaml::Controls::InkToolbarStencilButton^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::InkToolbarStencilButton^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarStencilButton^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::InkToolbarStencilButton();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      InkToolbarStencilButton *wrapperInstance = new InkToolbarStencilButton(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::InkToolbarStencilButton^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarStencilButton^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapInkToolbarStencilButton(winRtInstance));
    }





    static void SelectedStencilGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This())) {
        return;
      }

      InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::InkToolbarStencilKind result = wrapper->_instance->SelectedStencil;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedStencilSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This())) {
        return;
      }

      InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::InkToolbarStencilKind winRtValue = static_cast<::Windows::UI::Xaml::Controls::InkToolbarStencilKind>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SelectedStencil = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRulerItemVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This())) {
        return;
      }

      InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsRulerItemVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRulerItemVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This())) {
        return;
      }

      InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRulerItemVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsProtractorItemVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This())) {
        return;
      }

      InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsProtractorItemVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsProtractorItemVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This())) {
        return;
      }

      InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsProtractorItemVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProtractorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This())) {
        return;
      }

      InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());

      try  {
        ::Windows::UI::Input::Inking::InkPresenterProtractor^ result = wrapper->_instance->Protractor;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Input.Inking", "InkPresenterProtractor", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RulerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This())) {
        return;
      }

      InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());

      try  {
        ::Windows::UI::Input::Inking::InkPresenterRuler^ result = wrapper->_instance->Ruler;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Input.Inking", "InkPresenterRuler", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsExtensionGlyphShownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This())) {
        return;
      }

      InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsExtensionGlyphShown;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsExtensionGlyphShownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This())) {
        return;
      }

      InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsExtensionGlyphShown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MenuKindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarMenuButton^>(info.This())) {
        return;
      }

      InkToolbarMenuButton *wrapper = InkToolbarMenuButton::Unwrap<InkToolbarMenuButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::InkToolbarMenuKind result = wrapper->_instance->MenuKind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsThreeStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsThreeState;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsThreeStateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsThreeState = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsCheckedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        ::Platform::IBox<bool>^ result = wrapper->_instance->IsChecked;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Boolean>(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCheckedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        ::Platform::IBox<bool>^ winRtValue = ref new ::Platform::Box<bool>(Nan::To<bool>(value).FromMaybe(false));

        wrapper->_instance->IsChecked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->CommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->Command;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Command = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClickModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ClickMode result = wrapper->_instance->ClickMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClickModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ClickMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ClickMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ClickMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPointerOverGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPointerOver;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPressedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPressed;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsProtractorItemVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarStencilButton::IsProtractorItemVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRulerItemVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarStencilButton::IsRulerItemVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProtractorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarStencilButton::ProtractorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RulerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarStencilButton::RulerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedStencilPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarStencilButton::SelectedStencilProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsExtensionGlyphShownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarMenuButton::IsExtensionGlyphShownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsCheckedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsCheckedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsThreeStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsThreeStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClickModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::ClickModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPointerOverPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPointerOverProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPressedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPressedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Checked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Indeterminate::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unchecked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Click::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->Checked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->Indeterminate::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->Unchecked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->Click::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarStencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarStencilButton *wrapper = InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::InkToolbarStencilButton^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapInkToolbarStencilButton(::Windows::UI::Xaml::Controls::InkToolbarStencilButton^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::InkToolbarStencilButton^ UnwrapInkToolbarStencilButton(Local<Value> value);
  };

  Persistent<FunctionTemplate> InkToolbarStencilButton::s_constructorTemplate;

  v8::Local<v8::Value> WrapInkToolbarStencilButton(::Windows::UI::Xaml::Controls::InkToolbarStencilButton^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(InkToolbarStencilButton::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::InkToolbarStencilButton^ UnwrapInkToolbarStencilButton(Local<Value> value) {
     return InkToolbarStencilButton::Unwrap<InkToolbarStencilButton>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitInkToolbarStencilButton(Local<Object> exports) {
    InkToolbarStencilButton::Init(exports);
  }

  class InkToolbarToggleButton : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("InkToolbarToggleButton").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("toggleKind").ToLocalChecked(), ToggleKindGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isThreeState").ToLocalChecked(), IsThreeStateGetter, IsThreeStateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isChecked").ToLocalChecked(), IsCheckedGetter, IsCheckedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandParameter").ToLocalChecked(), CommandParameterGetter, CommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("command").ToLocalChecked(), CommandGetter, CommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clickMode").ToLocalChecked(), ClickModeGetter, ClickModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPointerOver").ToLocalChecked(), IsPointerOverGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPressed").ToLocalChecked(), IsPressedGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isCheckedProperty").ToLocalChecked(), IsCheckedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isThreeStateProperty").ToLocalChecked(), IsThreeStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clickModeProperty").ToLocalChecked(), ClickModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandParameterProperty").ToLocalChecked(), CommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandProperty").ToLocalChecked(), CommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPointerOverProperty").ToLocalChecked(), IsPointerOverPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPressedProperty").ToLocalChecked(), IsPressedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("InkToolbarToggleButton").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      InkToolbarToggleButton(::Windows::UI::Xaml::Controls::InkToolbarToggleButton^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::InkToolbarToggleButton^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarToggleButton^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      InkToolbarToggleButton *wrapperInstance = new InkToolbarToggleButton(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::InkToolbarToggleButton^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarToggleButton^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapInkToolbarToggleButton(winRtInstance));
    }





    static void ToggleKindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This())) {
        return;
      }

      InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::InkToolbarToggle result = wrapper->_instance->ToggleKind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsThreeStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsThreeState;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsThreeStateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsThreeState = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsCheckedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        ::Platform::IBox<bool>^ result = wrapper->_instance->IsChecked;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Boolean>(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCheckedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        ::Platform::IBox<bool>^ winRtValue = ref new ::Platform::Box<bool>(Nan::To<bool>(value).FromMaybe(false));

        wrapper->_instance->IsChecked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->CommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->Command;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Command = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClickModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ClickMode result = wrapper->_instance->ClickMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClickModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ClickMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ClickMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ClickMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPointerOverGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPointerOver;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPressedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPressed;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsCheckedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsCheckedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsThreeStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsThreeStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClickModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::ClickModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPointerOverPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPointerOverProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPressedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPressedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Checked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Indeterminate::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unchecked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Click::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->Checked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->Indeterminate::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->Unchecked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->Click::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::InkToolbarToggleButton^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapInkToolbarToggleButton(::Windows::UI::Xaml::Controls::InkToolbarToggleButton^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::InkToolbarToggleButton^ UnwrapInkToolbarToggleButton(Local<Value> value);
  };

  Persistent<FunctionTemplate> InkToolbarToggleButton::s_constructorTemplate;

  v8::Local<v8::Value> WrapInkToolbarToggleButton(::Windows::UI::Xaml::Controls::InkToolbarToggleButton^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(InkToolbarToggleButton::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::InkToolbarToggleButton^ UnwrapInkToolbarToggleButton(Local<Value> value) {
     return InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitInkToolbarToggleButton(Local<Object> exports) {
    InkToolbarToggleButton::Init(exports);
  }

  class InkToolbarToolButton : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("InkToolbarToolButton").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isExtensionGlyphShown").ToLocalChecked(), IsExtensionGlyphShownGetter, IsExtensionGlyphShownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("toolKind").ToLocalChecked(), ToolKindGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupName").ToLocalChecked(), GroupNameGetter, GroupNameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isThreeState").ToLocalChecked(), IsThreeStateGetter, IsThreeStateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isChecked").ToLocalChecked(), IsCheckedGetter, IsCheckedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandParameter").ToLocalChecked(), CommandParameterGetter, CommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("command").ToLocalChecked(), CommandGetter, CommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clickMode").ToLocalChecked(), ClickModeGetter, ClickModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPointerOver").ToLocalChecked(), IsPointerOverGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPressed").ToLocalChecked(), IsPressedGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isExtensionGlyphShownProperty").ToLocalChecked(), IsExtensionGlyphShownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("groupNameProperty").ToLocalChecked(), GroupNamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isCheckedProperty").ToLocalChecked(), IsCheckedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isThreeStateProperty").ToLocalChecked(), IsThreeStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clickModeProperty").ToLocalChecked(), ClickModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandParameterProperty").ToLocalChecked(), CommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandProperty").ToLocalChecked(), CommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPointerOverProperty").ToLocalChecked(), IsPointerOverPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPressedProperty").ToLocalChecked(), IsPressedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("InkToolbarToolButton").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      InkToolbarToolButton(::Windows::UI::Xaml::Controls::InkToolbarToolButton^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::InkToolbarToolButton^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarToolButton^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      InkToolbarToolButton *wrapperInstance = new InkToolbarToolButton(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::InkToolbarToolButton^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarToolButton^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapInkToolbarToolButton(winRtInstance));
    }





    static void IsExtensionGlyphShownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsExtensionGlyphShown;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsExtensionGlyphShownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsExtensionGlyphShown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ToolKindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::InkToolbarTool result = wrapper->_instance->ToolKind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupNameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This())) {
        return;
      }

      RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->GroupName;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupNameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This())) {
        return;
      }

      RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->GroupName = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsThreeStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsThreeState;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsThreeStateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsThreeState = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsCheckedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        ::Platform::IBox<bool>^ result = wrapper->_instance->IsChecked;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Boolean>(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCheckedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        ::Platform::IBox<bool>^ winRtValue = ref new ::Platform::Box<bool>(Nan::To<bool>(value).FromMaybe(false));

        wrapper->_instance->IsChecked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->CommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->Command;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Command = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClickModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ClickMode result = wrapper->_instance->ClickMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClickModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ClickMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ClickMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ClickMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPointerOverGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPointerOver;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPressedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPressed;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsExtensionGlyphShownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarToolButton::IsExtensionGlyphShownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GroupNamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RadioButton::GroupNameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsCheckedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsCheckedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsThreeStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsThreeStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClickModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::ClickModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPointerOverPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPointerOverProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPressedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPressedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Checked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Indeterminate::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unchecked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Click::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->Checked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->Indeterminate::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->Unchecked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->Click::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::InkToolbarToolButton^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapInkToolbarToolButton(::Windows::UI::Xaml::Controls::InkToolbarToolButton^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::InkToolbarToolButton^ UnwrapInkToolbarToolButton(Local<Value> value);
  };

  Persistent<FunctionTemplate> InkToolbarToolButton::s_constructorTemplate;

  v8::Local<v8::Value> WrapInkToolbarToolButton(::Windows::UI::Xaml::Controls::InkToolbarToolButton^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(InkToolbarToolButton::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::InkToolbarToolButton^ UnwrapInkToolbarToolButton(Local<Value> value) {
     return InkToolbarToolButton::Unwrap<InkToolbarToolButton>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitInkToolbarToolButton(Local<Object> exports) {
    InkToolbarToolButton::Init(exports);
  }

  class InkToolbarCustomToggleButton : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("InkToolbarCustomToggleButton").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("toggleKind").ToLocalChecked(), ToggleKindGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isThreeState").ToLocalChecked(), IsThreeStateGetter, IsThreeStateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isChecked").ToLocalChecked(), IsCheckedGetter, IsCheckedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandParameter").ToLocalChecked(), CommandParameterGetter, CommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("command").ToLocalChecked(), CommandGetter, CommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clickMode").ToLocalChecked(), ClickModeGetter, ClickModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPointerOver").ToLocalChecked(), IsPointerOverGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPressed").ToLocalChecked(), IsPressedGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isCheckedProperty").ToLocalChecked(), IsCheckedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isThreeStateProperty").ToLocalChecked(), IsThreeStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clickModeProperty").ToLocalChecked(), ClickModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandParameterProperty").ToLocalChecked(), CommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandProperty").ToLocalChecked(), CommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPointerOverProperty").ToLocalChecked(), IsPointerOverPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPressedProperty").ToLocalChecked(), IsPressedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("InkToolbarCustomToggleButton").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      InkToolbarCustomToggleButton(::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      InkToolbarCustomToggleButton *wrapperInstance = new InkToolbarCustomToggleButton(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapInkToolbarCustomToggleButton(winRtInstance));
    }





    static void ToggleKindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This())) {
        return;
      }

      InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::InkToolbarToggle result = wrapper->_instance->ToggleKind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsThreeStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsThreeState;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsThreeStateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsThreeState = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsCheckedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        ::Platform::IBox<bool>^ result = wrapper->_instance->IsChecked;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Boolean>(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCheckedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        ::Platform::IBox<bool>^ winRtValue = ref new ::Platform::Box<bool>(Nan::To<bool>(value).FromMaybe(false));

        wrapper->_instance->IsChecked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->CommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->Command;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Command = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClickModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ClickMode result = wrapper->_instance->ClickMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClickModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ClickMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ClickMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ClickMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPointerOverGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPointerOver;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPressedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPressed;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsCheckedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsCheckedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsThreeStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsThreeStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClickModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::ClickModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPointerOverPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPointerOverProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPressedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPressedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Checked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Indeterminate::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unchecked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Click::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->Checked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->Indeterminate::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->Unchecked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->Click::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToggleButton *wrapper = InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapInkToolbarCustomToggleButton(::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^ UnwrapInkToolbarCustomToggleButton(Local<Value> value);
  };

  Persistent<FunctionTemplate> InkToolbarCustomToggleButton::s_constructorTemplate;

  v8::Local<v8::Value> WrapInkToolbarCustomToggleButton(::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(InkToolbarCustomToggleButton::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton^ UnwrapInkToolbarCustomToggleButton(Local<Value> value) {
     return InkToolbarCustomToggleButton::Unwrap<InkToolbarCustomToggleButton>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitInkToolbarCustomToggleButton(Local<Object> exports) {
    InkToolbarCustomToggleButton::Init(exports);
  }

  class InkToolbarCustomToolButton : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("InkToolbarCustomToolButton").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("configurationContent").ToLocalChecked(), ConfigurationContentGetter, ConfigurationContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isExtensionGlyphShown").ToLocalChecked(), IsExtensionGlyphShownGetter, IsExtensionGlyphShownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("toolKind").ToLocalChecked(), ToolKindGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupName").ToLocalChecked(), GroupNameGetter, GroupNameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isThreeState").ToLocalChecked(), IsThreeStateGetter, IsThreeStateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isChecked").ToLocalChecked(), IsCheckedGetter, IsCheckedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandParameter").ToLocalChecked(), CommandParameterGetter, CommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("command").ToLocalChecked(), CommandGetter, CommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clickMode").ToLocalChecked(), ClickModeGetter, ClickModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPointerOver").ToLocalChecked(), IsPointerOverGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPressed").ToLocalChecked(), IsPressedGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("configurationContentProperty").ToLocalChecked(), ConfigurationContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isExtensionGlyphShownProperty").ToLocalChecked(), IsExtensionGlyphShownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("groupNameProperty").ToLocalChecked(), GroupNamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isCheckedProperty").ToLocalChecked(), IsCheckedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isThreeStateProperty").ToLocalChecked(), IsThreeStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clickModeProperty").ToLocalChecked(), ClickModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandParameterProperty").ToLocalChecked(), CommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandProperty").ToLocalChecked(), CommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPointerOverProperty").ToLocalChecked(), IsPointerOverPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPressedProperty").ToLocalChecked(), IsPressedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("InkToolbarCustomToolButton").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      InkToolbarCustomToolButton(::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      InkToolbarCustomToolButton *wrapperInstance = new InkToolbarCustomToolButton(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapInkToolbarCustomToolButton(winRtInstance));
    }





    static void ConfigurationContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This())) {
        return;
      }

      InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ConfigurationContent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ConfigurationContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This())) {
        return;
      }

      InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());

      try {

        ::Windows::UI::Xaml::UIElement^ winRtValue = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ConfigurationContent = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsExtensionGlyphShownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsExtensionGlyphShown;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsExtensionGlyphShownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsExtensionGlyphShown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ToolKindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::InkToolbarTool result = wrapper->_instance->ToolKind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupNameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This())) {
        return;
      }

      RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->GroupName;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupNameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This())) {
        return;
      }

      RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->GroupName = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsThreeStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsThreeState;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsThreeStateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsThreeState = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsCheckedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        ::Platform::IBox<bool>^ result = wrapper->_instance->IsChecked;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Boolean>(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCheckedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        ::Platform::IBox<bool>^ winRtValue = ref new ::Platform::Box<bool>(Nan::To<bool>(value).FromMaybe(false));

        wrapper->_instance->IsChecked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->CommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->Command;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Command = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClickModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ClickMode result = wrapper->_instance->ClickMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClickModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ClickMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ClickMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ClickMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPointerOverGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPointerOver;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPressedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPressed;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ConfigurationContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton::ConfigurationContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsExtensionGlyphShownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarToolButton::IsExtensionGlyphShownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GroupNamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RadioButton::GroupNameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsCheckedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsCheckedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsThreeStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsThreeStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClickModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::ClickModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPointerOverPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPointerOverProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPressedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPressedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Checked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Indeterminate::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unchecked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Click::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->Checked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->Indeterminate::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->Unchecked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->Click::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomToolButton *wrapper = InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapInkToolbarCustomToolButton(::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^ UnwrapInkToolbarCustomToolButton(Local<Value> value);
  };

  Persistent<FunctionTemplate> InkToolbarCustomToolButton::s_constructorTemplate;

  v8::Local<v8::Value> WrapInkToolbarCustomToolButton(::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(InkToolbarCustomToolButton::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::InkToolbarCustomToolButton^ UnwrapInkToolbarCustomToolButton(Local<Value> value) {
     return InkToolbarCustomToolButton::Unwrap<InkToolbarCustomToolButton>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitInkToolbarCustomToolButton(Local<Object> exports) {
    InkToolbarCustomToolButton::Init(exports);
  }

  class InkToolbarEraserButton : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("InkToolbarEraserButton").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isClearAllVisible").ToLocalChecked(), IsClearAllVisibleGetter, IsClearAllVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isExtensionGlyphShown").ToLocalChecked(), IsExtensionGlyphShownGetter, IsExtensionGlyphShownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("toolKind").ToLocalChecked(), ToolKindGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupName").ToLocalChecked(), GroupNameGetter, GroupNameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isThreeState").ToLocalChecked(), IsThreeStateGetter, IsThreeStateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isChecked").ToLocalChecked(), IsCheckedGetter, IsCheckedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandParameter").ToLocalChecked(), CommandParameterGetter, CommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("command").ToLocalChecked(), CommandGetter, CommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clickMode").ToLocalChecked(), ClickModeGetter, ClickModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPointerOver").ToLocalChecked(), IsPointerOverGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPressed").ToLocalChecked(), IsPressedGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("isClearAllVisibleProperty").ToLocalChecked(), IsClearAllVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isExtensionGlyphShownProperty").ToLocalChecked(), IsExtensionGlyphShownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("groupNameProperty").ToLocalChecked(), GroupNamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isCheckedProperty").ToLocalChecked(), IsCheckedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isThreeStateProperty").ToLocalChecked(), IsThreeStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clickModeProperty").ToLocalChecked(), ClickModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandParameterProperty").ToLocalChecked(), CommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandProperty").ToLocalChecked(), CommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPointerOverProperty").ToLocalChecked(), IsPointerOverPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPressedProperty").ToLocalChecked(), IsPressedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("InkToolbarEraserButton").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      InkToolbarEraserButton(::Windows::UI::Xaml::Controls::InkToolbarEraserButton^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::InkToolbarEraserButton^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarEraserButton^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::InkToolbarEraserButton();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      InkToolbarEraserButton *wrapperInstance = new InkToolbarEraserButton(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::InkToolbarEraserButton^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarEraserButton^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapInkToolbarEraserButton(winRtInstance));
    }





    static void IsClearAllVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This())) {
        return;
      }

      InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsClearAllVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsClearAllVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This())) {
        return;
      }

      InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsClearAllVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsExtensionGlyphShownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsExtensionGlyphShown;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsExtensionGlyphShownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsExtensionGlyphShown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ToolKindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::InkToolbarTool result = wrapper->_instance->ToolKind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupNameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This())) {
        return;
      }

      RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->GroupName;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupNameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This())) {
        return;
      }

      RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->GroupName = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsThreeStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsThreeState;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsThreeStateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsThreeState = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsCheckedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        ::Platform::IBox<bool>^ result = wrapper->_instance->IsChecked;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Boolean>(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCheckedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        ::Platform::IBox<bool>^ winRtValue = ref new ::Platform::Box<bool>(Nan::To<bool>(value).FromMaybe(false));

        wrapper->_instance->IsChecked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->CommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->Command;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Command = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClickModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ClickMode result = wrapper->_instance->ClickMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClickModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ClickMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ClickMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ClickMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPointerOverGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPointerOver;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPressedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPressed;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsClearAllVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarEraserButton::IsClearAllVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsExtensionGlyphShownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarToolButton::IsExtensionGlyphShownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GroupNamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RadioButton::GroupNameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsCheckedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsCheckedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsThreeStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsThreeStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClickModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::ClickModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPointerOverPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPointerOverProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPressedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPressedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Checked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Indeterminate::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unchecked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Click::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->Checked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->Indeterminate::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->Unchecked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->Click::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarEraserButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarEraserButton *wrapper = InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::InkToolbarEraserButton^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapInkToolbarEraserButton(::Windows::UI::Xaml::Controls::InkToolbarEraserButton^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::InkToolbarEraserButton^ UnwrapInkToolbarEraserButton(Local<Value> value);
  };

  Persistent<FunctionTemplate> InkToolbarEraserButton::s_constructorTemplate;

  v8::Local<v8::Value> WrapInkToolbarEraserButton(::Windows::UI::Xaml::Controls::InkToolbarEraserButton^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(InkToolbarEraserButton::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::InkToolbarEraserButton^ UnwrapInkToolbarEraserButton(Local<Value> value) {
     return InkToolbarEraserButton::Unwrap<InkToolbarEraserButton>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitInkToolbarEraserButton(Local<Object> exports) {
    InkToolbarEraserButton::Init(exports);
  }

  class InkToolbarPenButton : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("InkToolbarPenButton").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedStrokeWidth").ToLocalChecked(), SelectedStrokeWidthGetter, SelectedStrokeWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedBrushIndex").ToLocalChecked(), SelectedBrushIndexGetter, SelectedBrushIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("palette").ToLocalChecked(), PaletteGetter, PaletteSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minStrokeWidth").ToLocalChecked(), MinStrokeWidthGetter, MinStrokeWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxStrokeWidth").ToLocalChecked(), MaxStrokeWidthGetter, MaxStrokeWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedBrush").ToLocalChecked(), SelectedBrushGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isExtensionGlyphShown").ToLocalChecked(), IsExtensionGlyphShownGetter, IsExtensionGlyphShownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("toolKind").ToLocalChecked(), ToolKindGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupName").ToLocalChecked(), GroupNameGetter, GroupNameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isThreeState").ToLocalChecked(), IsThreeStateGetter, IsThreeStateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isChecked").ToLocalChecked(), IsCheckedGetter, IsCheckedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandParameter").ToLocalChecked(), CommandParameterGetter, CommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("command").ToLocalChecked(), CommandGetter, CommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clickMode").ToLocalChecked(), ClickModeGetter, ClickModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPointerOver").ToLocalChecked(), IsPointerOverGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPressed").ToLocalChecked(), IsPressedGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("maxStrokeWidthProperty").ToLocalChecked(), MaxStrokeWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minStrokeWidthProperty").ToLocalChecked(), MinStrokeWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paletteProperty").ToLocalChecked(), PalettePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedBrushIndexProperty").ToLocalChecked(), SelectedBrushIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedBrushProperty").ToLocalChecked(), SelectedBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedStrokeWidthProperty").ToLocalChecked(), SelectedStrokeWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isExtensionGlyphShownProperty").ToLocalChecked(), IsExtensionGlyphShownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("groupNameProperty").ToLocalChecked(), GroupNamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isCheckedProperty").ToLocalChecked(), IsCheckedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isThreeStateProperty").ToLocalChecked(), IsThreeStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clickModeProperty").ToLocalChecked(), ClickModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandParameterProperty").ToLocalChecked(), CommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandProperty").ToLocalChecked(), CommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPointerOverProperty").ToLocalChecked(), IsPointerOverPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPressedProperty").ToLocalChecked(), IsPressedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("InkToolbarPenButton").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      InkToolbarPenButton(::Windows::UI::Xaml::Controls::InkToolbarPenButton^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::InkToolbarPenButton^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarPenButton^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      InkToolbarPenButton *wrapperInstance = new InkToolbarPenButton(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::InkToolbarPenButton^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarPenButton^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapInkToolbarPenButton(winRtInstance));
    }





    static void SelectedStrokeWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        double result = wrapper->_instance->SelectedStrokeWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedStrokeWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->SelectedStrokeWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedBrushIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        int result = wrapper->_instance->SelectedBrushIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedBrushIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SelectedBrushIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaletteGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^ result = wrapper->_instance->Palette;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::Brush^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::Brush^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::Brush^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaletteSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!(NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^>(value) || value->IsArray())) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^ winRtValue = 
            [] (v8::Local<v8::Value> value) -> ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^
            {
              if (value->IsArray())
              {
                return NodeRT::Collections::JsArrayToWinrtVector<::Windows::UI::Xaml::Media::Brush^>(value.As<Array>(), 
                 [](Local<Value> value) -> bool {
                   return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value);
                 },
                 [](Local<Value> value) -> ::Windows::UI::Xaml::Media::Brush^ {
                   return dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));
                 }
                );
              }
              else
              {
                return dynamic_cast<::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^>(NodeRT::Utils::GetObjectInstance(value));
              }
            } (value);

        wrapper->_instance->Palette = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinStrokeWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        double result = wrapper->_instance->MinStrokeWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinStrokeWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinStrokeWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxStrokeWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        double result = wrapper->_instance->MaxStrokeWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxStrokeWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxStrokeWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->SelectedBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsExtensionGlyphShownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsExtensionGlyphShown;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsExtensionGlyphShownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsExtensionGlyphShown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ToolKindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::InkToolbarTool result = wrapper->_instance->ToolKind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupNameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This())) {
        return;
      }

      RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->GroupName;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupNameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This())) {
        return;
      }

      RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->GroupName = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsThreeStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsThreeState;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsThreeStateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsThreeState = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsCheckedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        ::Platform::IBox<bool>^ result = wrapper->_instance->IsChecked;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Boolean>(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCheckedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        ::Platform::IBox<bool>^ winRtValue = ref new ::Platform::Box<bool>(Nan::To<bool>(value).FromMaybe(false));

        wrapper->_instance->IsChecked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->CommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->Command;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Command = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClickModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ClickMode result = wrapper->_instance->ClickMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClickModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ClickMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ClickMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ClickMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPointerOverGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPointerOver;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPressedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPressed;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void MaxStrokeWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::MaxStrokeWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinStrokeWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::MinStrokeWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PalettePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::PaletteProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedBrushIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::SelectedBrushIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::SelectedBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedStrokeWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::SelectedStrokeWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsExtensionGlyphShownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarToolButton::IsExtensionGlyphShownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GroupNamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RadioButton::GroupNameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsCheckedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsCheckedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsThreeStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsThreeStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClickModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::ClickModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPointerOverPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPointerOverProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPressedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPressedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Checked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Indeterminate::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unchecked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Click::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->Checked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->Indeterminate::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->Unchecked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->Click::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::InkToolbarPenButton^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapInkToolbarPenButton(::Windows::UI::Xaml::Controls::InkToolbarPenButton^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::InkToolbarPenButton^ UnwrapInkToolbarPenButton(Local<Value> value);
  };

  Persistent<FunctionTemplate> InkToolbarPenButton::s_constructorTemplate;

  v8::Local<v8::Value> WrapInkToolbarPenButton(::Windows::UI::Xaml::Controls::InkToolbarPenButton^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(InkToolbarPenButton::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::InkToolbarPenButton^ UnwrapInkToolbarPenButton(Local<Value> value) {
     return InkToolbarPenButton::Unwrap<InkToolbarPenButton>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitInkToolbarPenButton(Local<Object> exports) {
    InkToolbarPenButton::Init(exports);
  }

  class InkToolbarRulerButton : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("InkToolbarRulerButton").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("ruler").ToLocalChecked(), RulerGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("toggleKind").ToLocalChecked(), ToggleKindGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isThreeState").ToLocalChecked(), IsThreeStateGetter, IsThreeStateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isChecked").ToLocalChecked(), IsCheckedGetter, IsCheckedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandParameter").ToLocalChecked(), CommandParameterGetter, CommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("command").ToLocalChecked(), CommandGetter, CommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clickMode").ToLocalChecked(), ClickModeGetter, ClickModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPointerOver").ToLocalChecked(), IsPointerOverGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPressed").ToLocalChecked(), IsPressedGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("rulerProperty").ToLocalChecked(), RulerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isCheckedProperty").ToLocalChecked(), IsCheckedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isThreeStateProperty").ToLocalChecked(), IsThreeStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clickModeProperty").ToLocalChecked(), ClickModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandParameterProperty").ToLocalChecked(), CommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandProperty").ToLocalChecked(), CommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPointerOverProperty").ToLocalChecked(), IsPointerOverPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPressedProperty").ToLocalChecked(), IsPressedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("InkToolbarRulerButton").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      InkToolbarRulerButton(::Windows::UI::Xaml::Controls::InkToolbarRulerButton^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::InkToolbarRulerButton^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarRulerButton^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::InkToolbarRulerButton();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      InkToolbarRulerButton *wrapperInstance = new InkToolbarRulerButton(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::InkToolbarRulerButton^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarRulerButton^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapInkToolbarRulerButton(winRtInstance));
    }





    static void RulerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This())) {
        return;
      }

      InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());

      try  {
        ::Windows::UI::Input::Inking::InkPresenterRuler^ result = wrapper->_instance->Ruler;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Input.Inking", "InkPresenterRuler", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ToggleKindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToggleButton^>(info.This())) {
        return;
      }

      InkToolbarToggleButton *wrapper = InkToolbarToggleButton::Unwrap<InkToolbarToggleButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::InkToolbarToggle result = wrapper->_instance->ToggleKind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsThreeStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsThreeState;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsThreeStateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsThreeState = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsCheckedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        ::Platform::IBox<bool>^ result = wrapper->_instance->IsChecked;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Boolean>(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCheckedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        ::Platform::IBox<bool>^ winRtValue = ref new ::Platform::Box<bool>(Nan::To<bool>(value).FromMaybe(false));

        wrapper->_instance->IsChecked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->CommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->Command;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Command = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClickModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ClickMode result = wrapper->_instance->ClickMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClickModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ClickMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ClickMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ClickMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPointerOverGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPointerOver;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPressedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPressed;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void RulerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarRulerButton::RulerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsCheckedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsCheckedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsThreeStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsThreeStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClickModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::ClickModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPointerOverPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPointerOverProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPressedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPressedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Checked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Indeterminate::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unchecked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Click::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->Checked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->Indeterminate::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->Unchecked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->Click::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarRulerButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarRulerButton *wrapper = InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::InkToolbarRulerButton^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapInkToolbarRulerButton(::Windows::UI::Xaml::Controls::InkToolbarRulerButton^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::InkToolbarRulerButton^ UnwrapInkToolbarRulerButton(Local<Value> value);
  };

  Persistent<FunctionTemplate> InkToolbarRulerButton::s_constructorTemplate;

  v8::Local<v8::Value> WrapInkToolbarRulerButton(::Windows::UI::Xaml::Controls::InkToolbarRulerButton^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(InkToolbarRulerButton::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::InkToolbarRulerButton^ UnwrapInkToolbarRulerButton(Local<Value> value) {
     return InkToolbarRulerButton::Unwrap<InkToolbarRulerButton>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitInkToolbarRulerButton(Local<Object> exports) {
    InkToolbarRulerButton::Init(exports);
  }

  class InkToolbarBallpointPenButton : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("InkToolbarBallpointPenButton").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedStrokeWidth").ToLocalChecked(), SelectedStrokeWidthGetter, SelectedStrokeWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedBrushIndex").ToLocalChecked(), SelectedBrushIndexGetter, SelectedBrushIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("palette").ToLocalChecked(), PaletteGetter, PaletteSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minStrokeWidth").ToLocalChecked(), MinStrokeWidthGetter, MinStrokeWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxStrokeWidth").ToLocalChecked(), MaxStrokeWidthGetter, MaxStrokeWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedBrush").ToLocalChecked(), SelectedBrushGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isExtensionGlyphShown").ToLocalChecked(), IsExtensionGlyphShownGetter, IsExtensionGlyphShownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("toolKind").ToLocalChecked(), ToolKindGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupName").ToLocalChecked(), GroupNameGetter, GroupNameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isThreeState").ToLocalChecked(), IsThreeStateGetter, IsThreeStateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isChecked").ToLocalChecked(), IsCheckedGetter, IsCheckedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandParameter").ToLocalChecked(), CommandParameterGetter, CommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("command").ToLocalChecked(), CommandGetter, CommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clickMode").ToLocalChecked(), ClickModeGetter, ClickModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPointerOver").ToLocalChecked(), IsPointerOverGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPressed").ToLocalChecked(), IsPressedGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("maxStrokeWidthProperty").ToLocalChecked(), MaxStrokeWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minStrokeWidthProperty").ToLocalChecked(), MinStrokeWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paletteProperty").ToLocalChecked(), PalettePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedBrushIndexProperty").ToLocalChecked(), SelectedBrushIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedBrushProperty").ToLocalChecked(), SelectedBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedStrokeWidthProperty").ToLocalChecked(), SelectedStrokeWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isExtensionGlyphShownProperty").ToLocalChecked(), IsExtensionGlyphShownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("groupNameProperty").ToLocalChecked(), GroupNamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isCheckedProperty").ToLocalChecked(), IsCheckedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isThreeStateProperty").ToLocalChecked(), IsThreeStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clickModeProperty").ToLocalChecked(), ClickModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandParameterProperty").ToLocalChecked(), CommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandProperty").ToLocalChecked(), CommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPointerOverProperty").ToLocalChecked(), IsPointerOverPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPressedProperty").ToLocalChecked(), IsPressedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("InkToolbarBallpointPenButton").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      InkToolbarBallpointPenButton(::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      InkToolbarBallpointPenButton *wrapperInstance = new InkToolbarBallpointPenButton(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapInkToolbarBallpointPenButton(winRtInstance));
    }





    static void SelectedStrokeWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        double result = wrapper->_instance->SelectedStrokeWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedStrokeWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->SelectedStrokeWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedBrushIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        int result = wrapper->_instance->SelectedBrushIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedBrushIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SelectedBrushIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaletteGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^ result = wrapper->_instance->Palette;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::Brush^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::Brush^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::Brush^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaletteSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!(NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^>(value) || value->IsArray())) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^ winRtValue = 
            [] (v8::Local<v8::Value> value) -> ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^
            {
              if (value->IsArray())
              {
                return NodeRT::Collections::JsArrayToWinrtVector<::Windows::UI::Xaml::Media::Brush^>(value.As<Array>(), 
                 [](Local<Value> value) -> bool {
                   return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value);
                 },
                 [](Local<Value> value) -> ::Windows::UI::Xaml::Media::Brush^ {
                   return dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));
                 }
                );
              }
              else
              {
                return dynamic_cast<::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^>(NodeRT::Utils::GetObjectInstance(value));
              }
            } (value);

        wrapper->_instance->Palette = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinStrokeWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        double result = wrapper->_instance->MinStrokeWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinStrokeWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinStrokeWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxStrokeWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        double result = wrapper->_instance->MaxStrokeWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxStrokeWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxStrokeWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->SelectedBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsExtensionGlyphShownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsExtensionGlyphShown;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsExtensionGlyphShownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsExtensionGlyphShown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ToolKindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::InkToolbarTool result = wrapper->_instance->ToolKind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupNameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This())) {
        return;
      }

      RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->GroupName;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupNameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This())) {
        return;
      }

      RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->GroupName = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsThreeStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsThreeState;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsThreeStateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsThreeState = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsCheckedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        ::Platform::IBox<bool>^ result = wrapper->_instance->IsChecked;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Boolean>(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCheckedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        ::Platform::IBox<bool>^ winRtValue = ref new ::Platform::Box<bool>(Nan::To<bool>(value).FromMaybe(false));

        wrapper->_instance->IsChecked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->CommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->Command;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Command = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClickModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ClickMode result = wrapper->_instance->ClickMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClickModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ClickMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ClickMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ClickMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPointerOverGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPointerOver;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPressedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPressed;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void MaxStrokeWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::MaxStrokeWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinStrokeWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::MinStrokeWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PalettePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::PaletteProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedBrushIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::SelectedBrushIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::SelectedBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedStrokeWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::SelectedStrokeWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsExtensionGlyphShownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarToolButton::IsExtensionGlyphShownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GroupNamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RadioButton::GroupNameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsCheckedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsCheckedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsThreeStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsThreeStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClickModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::ClickModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPointerOverPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPointerOverProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPressedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPressedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Checked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Indeterminate::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unchecked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Click::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->Checked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->Indeterminate::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->Unchecked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->Click::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarBallpointPenButton *wrapper = InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapInkToolbarBallpointPenButton(::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^ UnwrapInkToolbarBallpointPenButton(Local<Value> value);
  };

  Persistent<FunctionTemplate> InkToolbarBallpointPenButton::s_constructorTemplate;

  v8::Local<v8::Value> WrapInkToolbarBallpointPenButton(::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(InkToolbarBallpointPenButton::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton^ UnwrapInkToolbarBallpointPenButton(Local<Value> value) {
     return InkToolbarBallpointPenButton::Unwrap<InkToolbarBallpointPenButton>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitInkToolbarBallpointPenButton(Local<Object> exports) {
    InkToolbarBallpointPenButton::Init(exports);
  }

  class InkToolbarCustomPenButton : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("InkToolbarCustomPenButton").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("customPen").ToLocalChecked(), CustomPenGetter, CustomPenSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("configurationContent").ToLocalChecked(), ConfigurationContentGetter, ConfigurationContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedStrokeWidth").ToLocalChecked(), SelectedStrokeWidthGetter, SelectedStrokeWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedBrushIndex").ToLocalChecked(), SelectedBrushIndexGetter, SelectedBrushIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("palette").ToLocalChecked(), PaletteGetter, PaletteSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minStrokeWidth").ToLocalChecked(), MinStrokeWidthGetter, MinStrokeWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxStrokeWidth").ToLocalChecked(), MaxStrokeWidthGetter, MaxStrokeWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedBrush").ToLocalChecked(), SelectedBrushGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isExtensionGlyphShown").ToLocalChecked(), IsExtensionGlyphShownGetter, IsExtensionGlyphShownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("toolKind").ToLocalChecked(), ToolKindGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupName").ToLocalChecked(), GroupNameGetter, GroupNameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isThreeState").ToLocalChecked(), IsThreeStateGetter, IsThreeStateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isChecked").ToLocalChecked(), IsCheckedGetter, IsCheckedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandParameter").ToLocalChecked(), CommandParameterGetter, CommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("command").ToLocalChecked(), CommandGetter, CommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clickMode").ToLocalChecked(), ClickModeGetter, ClickModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPointerOver").ToLocalChecked(), IsPointerOverGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPressed").ToLocalChecked(), IsPressedGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("configurationContentProperty").ToLocalChecked(), ConfigurationContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("customPenProperty").ToLocalChecked(), CustomPenPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxStrokeWidthProperty").ToLocalChecked(), MaxStrokeWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minStrokeWidthProperty").ToLocalChecked(), MinStrokeWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paletteProperty").ToLocalChecked(), PalettePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedBrushIndexProperty").ToLocalChecked(), SelectedBrushIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedBrushProperty").ToLocalChecked(), SelectedBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedStrokeWidthProperty").ToLocalChecked(), SelectedStrokeWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isExtensionGlyphShownProperty").ToLocalChecked(), IsExtensionGlyphShownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("groupNameProperty").ToLocalChecked(), GroupNamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isCheckedProperty").ToLocalChecked(), IsCheckedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isThreeStateProperty").ToLocalChecked(), IsThreeStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clickModeProperty").ToLocalChecked(), ClickModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandParameterProperty").ToLocalChecked(), CommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandProperty").ToLocalChecked(), CommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPointerOverProperty").ToLocalChecked(), IsPointerOverPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPressedProperty").ToLocalChecked(), IsPressedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("InkToolbarCustomPenButton").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      InkToolbarCustomPenButton(::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      InkToolbarCustomPenButton *wrapperInstance = new InkToolbarCustomPenButton(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapInkToolbarCustomPenButton(winRtInstance));
    }





    static void CustomPenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This())) {
        return;
      }

      InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::InkToolbarCustomPen^ result = wrapper->_instance->CustomPen;
        info.GetReturnValue().Set(WrapInkToolbarCustomPen(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CustomPenSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPen^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This())) {
        return;
      }

      InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::InkToolbarCustomPen^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::InkToolbarCustomPen^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CustomPen = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ConfigurationContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This())) {
        return;
      }

      InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ConfigurationContent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ConfigurationContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This())) {
        return;
      }

      InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());

      try {

        ::Windows::UI::Xaml::UIElement^ winRtValue = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ConfigurationContent = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedStrokeWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        double result = wrapper->_instance->SelectedStrokeWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedStrokeWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->SelectedStrokeWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedBrushIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        int result = wrapper->_instance->SelectedBrushIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedBrushIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SelectedBrushIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaletteGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^ result = wrapper->_instance->Palette;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::Brush^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::Brush^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::Brush^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaletteSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!(NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^>(value) || value->IsArray())) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^ winRtValue = 
            [] (v8::Local<v8::Value> value) -> ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^
            {
              if (value->IsArray())
              {
                return NodeRT::Collections::JsArrayToWinrtVector<::Windows::UI::Xaml::Media::Brush^>(value.As<Array>(), 
                 [](Local<Value> value) -> bool {
                   return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value);
                 },
                 [](Local<Value> value) -> ::Windows::UI::Xaml::Media::Brush^ {
                   return dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));
                 }
                );
              }
              else
              {
                return dynamic_cast<::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^>(NodeRT::Utils::GetObjectInstance(value));
              }
            } (value);

        wrapper->_instance->Palette = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinStrokeWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        double result = wrapper->_instance->MinStrokeWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinStrokeWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinStrokeWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxStrokeWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        double result = wrapper->_instance->MaxStrokeWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxStrokeWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxStrokeWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->SelectedBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsExtensionGlyphShownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsExtensionGlyphShown;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsExtensionGlyphShownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsExtensionGlyphShown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ToolKindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::InkToolbarTool result = wrapper->_instance->ToolKind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupNameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This())) {
        return;
      }

      RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->GroupName;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupNameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This())) {
        return;
      }

      RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->GroupName = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsThreeStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsThreeState;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsThreeStateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsThreeState = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsCheckedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        ::Platform::IBox<bool>^ result = wrapper->_instance->IsChecked;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Boolean>(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCheckedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        ::Platform::IBox<bool>^ winRtValue = ref new ::Platform::Box<bool>(Nan::To<bool>(value).FromMaybe(false));

        wrapper->_instance->IsChecked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->CommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->Command;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Command = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClickModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ClickMode result = wrapper->_instance->ClickMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClickModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ClickMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ClickMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ClickMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPointerOverGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPointerOver;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPressedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPressed;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ConfigurationContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton::ConfigurationContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CustomPenPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton::CustomPenProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxStrokeWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::MaxStrokeWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinStrokeWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::MinStrokeWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PalettePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::PaletteProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedBrushIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::SelectedBrushIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::SelectedBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedStrokeWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::SelectedStrokeWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsExtensionGlyphShownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarToolButton::IsExtensionGlyphShownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GroupNamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RadioButton::GroupNameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsCheckedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsCheckedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsThreeStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsThreeStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClickModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::ClickModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPointerOverPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPointerOverProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPressedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPressedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Checked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Indeterminate::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unchecked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Click::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->Checked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->Indeterminate::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->Unchecked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->Click::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarCustomPenButton *wrapper = InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapInkToolbarCustomPenButton(::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^ UnwrapInkToolbarCustomPenButton(Local<Value> value);
  };

  Persistent<FunctionTemplate> InkToolbarCustomPenButton::s_constructorTemplate;

  v8::Local<v8::Value> WrapInkToolbarCustomPenButton(::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(InkToolbarCustomPenButton::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::InkToolbarCustomPenButton^ UnwrapInkToolbarCustomPenButton(Local<Value> value) {
     return InkToolbarCustomPenButton::Unwrap<InkToolbarCustomPenButton>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitInkToolbarCustomPenButton(Local<Object> exports) {
    InkToolbarCustomPenButton::Init(exports);
  }

  class InkToolbarHighlighterButton : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("InkToolbarHighlighterButton").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedStrokeWidth").ToLocalChecked(), SelectedStrokeWidthGetter, SelectedStrokeWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedBrushIndex").ToLocalChecked(), SelectedBrushIndexGetter, SelectedBrushIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("palette").ToLocalChecked(), PaletteGetter, PaletteSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minStrokeWidth").ToLocalChecked(), MinStrokeWidthGetter, MinStrokeWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxStrokeWidth").ToLocalChecked(), MaxStrokeWidthGetter, MaxStrokeWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedBrush").ToLocalChecked(), SelectedBrushGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isExtensionGlyphShown").ToLocalChecked(), IsExtensionGlyphShownGetter, IsExtensionGlyphShownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("toolKind").ToLocalChecked(), ToolKindGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupName").ToLocalChecked(), GroupNameGetter, GroupNameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isThreeState").ToLocalChecked(), IsThreeStateGetter, IsThreeStateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isChecked").ToLocalChecked(), IsCheckedGetter, IsCheckedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandParameter").ToLocalChecked(), CommandParameterGetter, CommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("command").ToLocalChecked(), CommandGetter, CommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clickMode").ToLocalChecked(), ClickModeGetter, ClickModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPointerOver").ToLocalChecked(), IsPointerOverGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPressed").ToLocalChecked(), IsPressedGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("maxStrokeWidthProperty").ToLocalChecked(), MaxStrokeWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minStrokeWidthProperty").ToLocalChecked(), MinStrokeWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paletteProperty").ToLocalChecked(), PalettePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedBrushIndexProperty").ToLocalChecked(), SelectedBrushIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedBrushProperty").ToLocalChecked(), SelectedBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedStrokeWidthProperty").ToLocalChecked(), SelectedStrokeWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isExtensionGlyphShownProperty").ToLocalChecked(), IsExtensionGlyphShownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("groupNameProperty").ToLocalChecked(), GroupNamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isCheckedProperty").ToLocalChecked(), IsCheckedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isThreeStateProperty").ToLocalChecked(), IsThreeStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clickModeProperty").ToLocalChecked(), ClickModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandParameterProperty").ToLocalChecked(), CommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandProperty").ToLocalChecked(), CommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPointerOverProperty").ToLocalChecked(), IsPointerOverPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPressedProperty").ToLocalChecked(), IsPressedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("InkToolbarHighlighterButton").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      InkToolbarHighlighterButton(::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      InkToolbarHighlighterButton *wrapperInstance = new InkToolbarHighlighterButton(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapInkToolbarHighlighterButton(winRtInstance));
    }





    static void SelectedStrokeWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        double result = wrapper->_instance->SelectedStrokeWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedStrokeWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->SelectedStrokeWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedBrushIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        int result = wrapper->_instance->SelectedBrushIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedBrushIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SelectedBrushIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaletteGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^ result = wrapper->_instance->Palette;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::Brush^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::Brush^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::Brush^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaletteSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!(NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^>(value) || value->IsArray())) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^ winRtValue = 
            [] (v8::Local<v8::Value> value) -> ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^
            {
              if (value->IsArray())
              {
                return NodeRT::Collections::JsArrayToWinrtVector<::Windows::UI::Xaml::Media::Brush^>(value.As<Array>(), 
                 [](Local<Value> value) -> bool {
                   return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value);
                 },
                 [](Local<Value> value) -> ::Windows::UI::Xaml::Media::Brush^ {
                   return dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));
                 }
                );
              }
              else
              {
                return dynamic_cast<::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^>(NodeRT::Utils::GetObjectInstance(value));
              }
            } (value);

        wrapper->_instance->Palette = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinStrokeWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        double result = wrapper->_instance->MinStrokeWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinStrokeWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinStrokeWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxStrokeWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        double result = wrapper->_instance->MaxStrokeWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxStrokeWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxStrokeWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->SelectedBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsExtensionGlyphShownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsExtensionGlyphShown;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsExtensionGlyphShownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsExtensionGlyphShown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ToolKindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::InkToolbarTool result = wrapper->_instance->ToolKind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupNameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This())) {
        return;
      }

      RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->GroupName;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupNameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This())) {
        return;
      }

      RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->GroupName = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsThreeStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsThreeState;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsThreeStateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsThreeState = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsCheckedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        ::Platform::IBox<bool>^ result = wrapper->_instance->IsChecked;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Boolean>(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCheckedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        ::Platform::IBox<bool>^ winRtValue = ref new ::Platform::Box<bool>(Nan::To<bool>(value).FromMaybe(false));

        wrapper->_instance->IsChecked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->CommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->Command;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Command = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClickModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ClickMode result = wrapper->_instance->ClickMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClickModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ClickMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ClickMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ClickMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPointerOverGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPointerOver;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPressedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPressed;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void MaxStrokeWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::MaxStrokeWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinStrokeWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::MinStrokeWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PalettePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::PaletteProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedBrushIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::SelectedBrushIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::SelectedBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedStrokeWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::SelectedStrokeWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsExtensionGlyphShownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarToolButton::IsExtensionGlyphShownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GroupNamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RadioButton::GroupNameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsCheckedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsCheckedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsThreeStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsThreeStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClickModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::ClickModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPointerOverPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPointerOverProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPressedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPressedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Checked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Indeterminate::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unchecked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Click::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->Checked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->Indeterminate::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->Unchecked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->Click::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarHighlighterButton *wrapper = InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapInkToolbarHighlighterButton(::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^ UnwrapInkToolbarHighlighterButton(Local<Value> value);
  };

  Persistent<FunctionTemplate> InkToolbarHighlighterButton::s_constructorTemplate;

  v8::Local<v8::Value> WrapInkToolbarHighlighterButton(::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(InkToolbarHighlighterButton::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::InkToolbarHighlighterButton^ UnwrapInkToolbarHighlighterButton(Local<Value> value) {
     return InkToolbarHighlighterButton::Unwrap<InkToolbarHighlighterButton>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitInkToolbarHighlighterButton(Local<Object> exports) {
    InkToolbarHighlighterButton::Init(exports);
  }

  class InkToolbarPencilButton : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("InkToolbarPencilButton").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedStrokeWidth").ToLocalChecked(), SelectedStrokeWidthGetter, SelectedStrokeWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedBrushIndex").ToLocalChecked(), SelectedBrushIndexGetter, SelectedBrushIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("palette").ToLocalChecked(), PaletteGetter, PaletteSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minStrokeWidth").ToLocalChecked(), MinStrokeWidthGetter, MinStrokeWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxStrokeWidth").ToLocalChecked(), MaxStrokeWidthGetter, MaxStrokeWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedBrush").ToLocalChecked(), SelectedBrushGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isExtensionGlyphShown").ToLocalChecked(), IsExtensionGlyphShownGetter, IsExtensionGlyphShownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("toolKind").ToLocalChecked(), ToolKindGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupName").ToLocalChecked(), GroupNameGetter, GroupNameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isThreeState").ToLocalChecked(), IsThreeStateGetter, IsThreeStateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isChecked").ToLocalChecked(), IsCheckedGetter, IsCheckedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("commandParameter").ToLocalChecked(), CommandParameterGetter, CommandParameterSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("command").ToLocalChecked(), CommandGetter, CommandSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clickMode").ToLocalChecked(), ClickModeGetter, ClickModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPointerOver").ToLocalChecked(), IsPointerOverGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isPressed").ToLocalChecked(), IsPressedGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("maxStrokeWidthProperty").ToLocalChecked(), MaxStrokeWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minStrokeWidthProperty").ToLocalChecked(), MinStrokeWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paletteProperty").ToLocalChecked(), PalettePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedBrushIndexProperty").ToLocalChecked(), SelectedBrushIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedBrushProperty").ToLocalChecked(), SelectedBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedStrokeWidthProperty").ToLocalChecked(), SelectedStrokeWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isExtensionGlyphShownProperty").ToLocalChecked(), IsExtensionGlyphShownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("groupNameProperty").ToLocalChecked(), GroupNamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isCheckedProperty").ToLocalChecked(), IsCheckedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isThreeStateProperty").ToLocalChecked(), IsThreeStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clickModeProperty").ToLocalChecked(), ClickModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandParameterProperty").ToLocalChecked(), CommandParameterPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("commandProperty").ToLocalChecked(), CommandPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPointerOverProperty").ToLocalChecked(), IsPointerOverPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isPressedProperty").ToLocalChecked(), IsPressedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("InkToolbarPencilButton").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      InkToolbarPencilButton(::Windows::UI::Xaml::Controls::InkToolbarPencilButton^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::InkToolbarPencilButton^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarPencilButton^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::InkToolbarPencilButton();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      InkToolbarPencilButton *wrapperInstance = new InkToolbarPencilButton(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::InkToolbarPencilButton^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::InkToolbarPencilButton^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapInkToolbarPencilButton(winRtInstance));
    }





    static void SelectedStrokeWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        double result = wrapper->_instance->SelectedStrokeWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedStrokeWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->SelectedStrokeWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedBrushIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        int result = wrapper->_instance->SelectedBrushIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedBrushIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SelectedBrushIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaletteGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^ result = wrapper->_instance->Palette;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::Brush^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::Brush^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::Brush^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaletteSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!(NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^>(value) || value->IsArray())) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^ winRtValue = 
            [] (v8::Local<v8::Value> value) -> ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^
            {
              if (value->IsArray())
              {
                return NodeRT::Collections::JsArrayToWinrtVector<::Windows::UI::Xaml::Media::Brush^>(value.As<Array>(), 
                 [](Local<Value> value) -> bool {
                   return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value);
                 },
                 [](Local<Value> value) -> ::Windows::UI::Xaml::Media::Brush^ {
                   return dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));
                 }
                );
              }
              else
              {
                return dynamic_cast<::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::Brush^>^>(NodeRT::Utils::GetObjectInstance(value));
              }
            } (value);

        wrapper->_instance->Palette = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinStrokeWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        double result = wrapper->_instance->MinStrokeWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinStrokeWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinStrokeWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxStrokeWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        double result = wrapper->_instance->MaxStrokeWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxStrokeWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxStrokeWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPenButton^>(info.This())) {
        return;
      }

      InkToolbarPenButton *wrapper = InkToolbarPenButton::Unwrap<InkToolbarPenButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->SelectedBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsExtensionGlyphShownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsExtensionGlyphShown;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsExtensionGlyphShownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsExtensionGlyphShown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ToolKindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarToolButton^>(info.This())) {
        return;
      }

      InkToolbarToolButton *wrapper = InkToolbarToolButton::Unwrap<InkToolbarToolButton>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::InkToolbarTool result = wrapper->_instance->ToolKind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupNameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This())) {
        return;
      }

      RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->GroupName;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupNameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::RadioButton^>(info.This())) {
        return;
      }

      RadioButton *wrapper = RadioButton::Unwrap<RadioButton>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->GroupName = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsThreeStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        bool result = wrapper->_instance->IsThreeState;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsThreeStateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsThreeState = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsCheckedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try  {
        ::Platform::IBox<bool>^ result = wrapper->_instance->IsChecked;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(Nan::New<Boolean>(result->Value)) : Undefined());
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsCheckedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ToggleButton^>(info.This())) {
        return;
      }

      ToggleButton *wrapper = ToggleButton::Unwrap<ToggleButton>(info.This());

      try {

        ::Platform::IBox<bool>^ winRtValue = ref new ::Platform::Box<bool>(Nan::To<bool>(value).FromMaybe(false));

        wrapper->_instance->IsChecked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandParameterGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->CommandParameter;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandParameterSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CommandParameter = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CommandGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Platform::Windows::Input::ICommand^ result = wrapper->_instance->Command;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System.Windows.Input", "ICommand", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CommandSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Windows::Input::ICommand^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Platform::Windows::Input::ICommand^ winRtValue = dynamic_cast<::Platform::Windows::Input::ICommand^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Command = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClickModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ClickMode result = wrapper->_instance->ClickMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClickModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ClickMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ClickMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ClickMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsPointerOverGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPointerOver;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsPressedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::ButtonBase^>(info.This())) {
        return;
      }

      ButtonBase *wrapper = ButtonBase::Unwrap<ButtonBase>(info.This());

      try  {
        bool result = wrapper->_instance->IsPressed;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void MaxStrokeWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::MaxStrokeWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinStrokeWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::MinStrokeWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PalettePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::PaletteProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedBrushIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::SelectedBrushIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::SelectedBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedStrokeWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarPenButton::SelectedStrokeWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsExtensionGlyphShownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::InkToolbarToolButton::IsExtensionGlyphShownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GroupNamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::RadioButton::GroupNameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsCheckedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsCheckedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsThreeStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ToggleButton::IsThreeStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClickModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::ClickModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandParameterPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandParameterProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CommandPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::CommandProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPointerOverPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPointerOverProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsPressedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::ButtonBase::IsPressedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Checked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Indeterminate::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unchecked::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Click::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"click", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"checked", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->Checked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"indeterminate", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->Indeterminate::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unchecked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->Unchecked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"click", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->Click::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::InkToolbarPencilButton^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          InkToolbarPencilButton *wrapper = InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::InkToolbarPencilButton^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapInkToolbarPencilButton(::Windows::UI::Xaml::Controls::InkToolbarPencilButton^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::InkToolbarPencilButton^ UnwrapInkToolbarPencilButton(Local<Value> value);
  };

  Persistent<FunctionTemplate> InkToolbarPencilButton::s_constructorTemplate;

  v8::Local<v8::Value> WrapInkToolbarPencilButton(::Windows::UI::Xaml::Controls::InkToolbarPencilButton^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(InkToolbarPencilButton::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::InkToolbarPencilButton^ UnwrapInkToolbarPencilButton(Local<Value> value) {
     return InkToolbarPencilButton::Unwrap<InkToolbarPencilButton>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitInkToolbarPencilButton(Local<Object> exports) {
    InkToolbarPencilButton::Init(exports);
  }

  class PivotItemEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("PivotItemEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("item").ToLocalChecked(), ItemGetter, ItemSetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("PivotItemEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      PivotItemEventArgs(::Windows::UI::Xaml::Controls::PivotItemEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::PivotItemEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItemEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::PivotItemEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::PivotItemEventArgs();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      PivotItemEventArgs *wrapperInstance = new PivotItemEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItemEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::PivotItemEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::PivotItemEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapPivotItemEventArgs(winRtInstance));
    }





    static void ItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItemEventArgs^>(info.This())) {
        return;
      }

      PivotItemEventArgs *wrapper = PivotItemEventArgs::Unwrap<PivotItemEventArgs>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::PivotItem^ result = wrapper->_instance->Item;
        info.GetReturnValue().Set(WrapPivotItem(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItemEventArgs^>(info.This())) {
        return;
      }

      PivotItemEventArgs *wrapper = PivotItemEventArgs::Unwrap<PivotItemEventArgs>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::PivotItem^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::PivotItem^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Item = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::PivotItemEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapPivotItemEventArgs(::Windows::UI::Xaml::Controls::PivotItemEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::PivotItemEventArgs^ UnwrapPivotItemEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> PivotItemEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapPivotItemEventArgs(::Windows::UI::Xaml::Controls::PivotItemEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(PivotItemEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::PivotItemEventArgs^ UnwrapPivotItemEventArgs(Local<Value> value) {
     return PivotItemEventArgs::Unwrap<PivotItemEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitPivotItemEventArgs(Local<Object> exports) {
    PivotItemEventArgs::Init(exports);
  }

  class DatePickedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("DatePickedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("newDate").ToLocalChecked(), NewDateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("oldDate").ToLocalChecked(), OldDateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("DatePickedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      DatePickedEventArgs(::Windows::UI::Xaml::Controls::DatePickedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::DatePickedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::DatePickedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::DatePickedEventArgs();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      DatePickedEventArgs *wrapperInstance = new DatePickedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::DatePickedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::DatePickedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapDatePickedEventArgs(winRtInstance));
    }





    static void NewDateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickedEventArgs^>(info.This())) {
        return;
      }

      DatePickedEventArgs *wrapper = DatePickedEventArgs::Unwrap<DatePickedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::DateTime result = wrapper->_instance->NewDate;
        info.GetReturnValue().Set(NodeRT::Utils::DateTimeToJS(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OldDateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickedEventArgs^>(info.This())) {
        return;
      }

      DatePickedEventArgs *wrapper = DatePickedEventArgs::Unwrap<DatePickedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::DateTime result = wrapper->_instance->OldDate;
        info.GetReturnValue().Set(NodeRT::Utils::DateTimeToJS(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::DatePickedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapDatePickedEventArgs(::Windows::UI::Xaml::Controls::DatePickedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::DatePickedEventArgs^ UnwrapDatePickedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> DatePickedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapDatePickedEventArgs(::Windows::UI::Xaml::Controls::DatePickedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(DatePickedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::DatePickedEventArgs^ UnwrapDatePickedEventArgs(Local<Value> value) {
     return DatePickedEventArgs::Unwrap<DatePickedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitDatePickedEventArgs(Local<Object> exports) {
    DatePickedEventArgs::Init(exports);
  }

  class DatePickerFlyoutItem : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("DatePickerFlyoutItem").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);


          
            Nan::SetPrototypeMethod(localRef, "getCustomProperty", GetCustomProperty);
            Nan::SetPrototypeMethod(localRef, "getIndexedProperty", GetIndexedProperty);
            Nan::SetPrototypeMethod(localRef, "getStringRepresentation", GetStringRepresentation);
          



          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("secondaryText").ToLocalChecked(), SecondaryTextGetter, SecondaryTextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("primaryText").ToLocalChecked(), PrimaryTextGetter, PrimaryTextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("type").ToLocalChecked(), TypeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("primaryTextProperty").ToLocalChecked(), PrimaryTextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("secondaryTextProperty").ToLocalChecked(), SecondaryTextPropertyGetter);


        Nan::Set(exports, Nan::New<String>("DatePickerFlyoutItem").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      DatePickerFlyoutItem(::Windows::UI::Xaml::Controls::DatePickerFlyoutItem^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::DatePickerFlyoutItem^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutItem^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::DatePickerFlyoutItem^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      DatePickerFlyoutItem *wrapperInstance = new DatePickerFlyoutItem(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutItem^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::DatePickerFlyoutItem^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::DatePickerFlyoutItem^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapDatePickerFlyoutItem(winRtInstance));
    }


    static void GetCustomProperty(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutItem^>(info.This())) {
        return;
      }

      DatePickerFlyoutItem *wrapper = DatePickerFlyoutItem::Unwrap<DatePickerFlyoutItem>(info.This());

      if (info.Length() == 1
        && info[0]->IsString())
      {
        try
        {
          Platform::String^ arg0 = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), info[0])));
          
          ::Windows::UI::Xaml::Data::ICustomProperty^ result;
          result = wrapper->_instance->GetCustomProperty(arg0);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Data", "ICustomProperty", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetIndexedProperty(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutItem^>(info.This())) {
        return;
      }

      DatePickerFlyoutItem *wrapper = DatePickerFlyoutItem::Unwrap<DatePickerFlyoutItem>(info.This());

      if (info.Length() == 2
        && info[0]->IsString()
        && NodeRT::Utils::IsWinRtWrapperOf<::Platform::Type^>(info[1]))
      {
        try
        {
          Platform::String^ arg0 = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), info[0])));
          ::Platform::Type^ arg1 = dynamic_cast<::Platform::Type^>(NodeRT::Utils::GetObjectInstance(info[1]));
          
          ::Windows::UI::Xaml::Data::ICustomProperty^ result;
          result = wrapper->_instance->GetIndexedProperty(arg0, arg1);
          info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Data", "ICustomProperty", result));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }
    static void GetStringRepresentation(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutItem^>(info.This())) {
        return;
      }

      DatePickerFlyoutItem *wrapper = DatePickerFlyoutItem::Unwrap<DatePickerFlyoutItem>(info.This());

      if (info.Length() == 0)
      {
        try
        {
          Platform::String^ result;
          result = wrapper->_instance->GetStringRepresentation();
          info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
          return;
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }



    static void SecondaryTextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutItem^>(info.This())) {
        return;
      }

      DatePickerFlyoutItem *wrapper = DatePickerFlyoutItem::Unwrap<DatePickerFlyoutItem>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->SecondaryText;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SecondaryTextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutItem^>(info.This())) {
        return;
      }

      DatePickerFlyoutItem *wrapper = DatePickerFlyoutItem::Unwrap<DatePickerFlyoutItem>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->SecondaryText = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PrimaryTextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutItem^>(info.This())) {
        return;
      }

      DatePickerFlyoutItem *wrapper = DatePickerFlyoutItem::Unwrap<DatePickerFlyoutItem>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->PrimaryText;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PrimaryTextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutItem^>(info.This())) {
        return;
      }

      DatePickerFlyoutItem *wrapper = DatePickerFlyoutItem::Unwrap<DatePickerFlyoutItem>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->PrimaryText = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TypeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutItem^>(info.This())) {
        return;
      }

      DatePickerFlyoutItem *wrapper = DatePickerFlyoutItem::Unwrap<DatePickerFlyoutItem>(info.This());

      try  {
        ::Platform::Type^ result = wrapper->_instance->Type;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("System", "Type", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void PrimaryTextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePickerFlyoutItem::PrimaryTextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SecondaryTextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePickerFlyoutItem::SecondaryTextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    private:
      ::Windows::UI::Xaml::Controls::DatePickerFlyoutItem^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapDatePickerFlyoutItem(::Windows::UI::Xaml::Controls::DatePickerFlyoutItem^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::DatePickerFlyoutItem^ UnwrapDatePickerFlyoutItem(Local<Value> value);
  };

  Persistent<FunctionTemplate> DatePickerFlyoutItem::s_constructorTemplate;

  v8::Local<v8::Value> WrapDatePickerFlyoutItem(::Windows::UI::Xaml::Controls::DatePickerFlyoutItem^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(DatePickerFlyoutItem::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::DatePickerFlyoutItem^ UnwrapDatePickerFlyoutItem(Local<Value> value) {
     return DatePickerFlyoutItem::Unwrap<DatePickerFlyoutItem>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitDatePickerFlyoutItem(Local<Object> exports) {
    DatePickerFlyoutItem::Init(exports);
  }

  class ItemsPickedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ItemsPickedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("addedItems").ToLocalChecked(), AddedItemsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("removedItems").ToLocalChecked(), RemovedItemsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("ItemsPickedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ItemsPickedEventArgs(::Windows::UI::Xaml::Controls::ItemsPickedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ItemsPickedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPickedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ItemsPickedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ItemsPickedEventArgs();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ItemsPickedEventArgs *wrapperInstance = new ItemsPickedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPickedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ItemsPickedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ItemsPickedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapItemsPickedEventArgs(winRtInstance));
    }





    static void AddedItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPickedEventArgs^>(info.This())) {
        return;
      }

      ItemsPickedEventArgs *wrapper = ItemsPickedEventArgs::Unwrap<ItemsPickedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Platform::Object^>^ result = wrapper->_instance->AddedItems;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Platform::Object^>::CreateVectorWrapper(result, 
            [](::Platform::Object^ val) -> Local<Value> {
              return CreateOpaqueWrapper(val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value);
            },
            [](Local<Value> value) -> ::Platform::Object^ {
              return dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RemovedItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPickedEventArgs^>(info.This())) {
        return;
      }

      ItemsPickedEventArgs *wrapper = ItemsPickedEventArgs::Unwrap<ItemsPickedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Platform::Object^>^ result = wrapper->_instance->RemovedItems;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Platform::Object^>::CreateVectorWrapper(result, 
            [](::Platform::Object^ val) -> Local<Value> {
              return CreateOpaqueWrapper(val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value);
            },
            [](Local<Value> value) -> ::Platform::Object^ {
              return dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::ItemsPickedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapItemsPickedEventArgs(::Windows::UI::Xaml::Controls::ItemsPickedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ItemsPickedEventArgs^ UnwrapItemsPickedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> ItemsPickedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapItemsPickedEventArgs(::Windows::UI::Xaml::Controls::ItemsPickedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ItemsPickedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ItemsPickedEventArgs^ UnwrapItemsPickedEventArgs(Local<Value> value) {
     return ItemsPickedEventArgs::Unwrap<ItemsPickedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitItemsPickedEventArgs(Local<Object> exports) {
    ItemsPickedEventArgs::Init(exports);
  }

  class PickerConfirmedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("PickerConfirmedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("PickerConfirmedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      PickerConfirmedEventArgs(::Windows::UI::Xaml::Controls::PickerConfirmedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::PickerConfirmedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerConfirmedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::PickerConfirmedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::PickerConfirmedEventArgs();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      PickerConfirmedEventArgs *wrapperInstance = new PickerConfirmedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerConfirmedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::PickerConfirmedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::PickerConfirmedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapPickerConfirmedEventArgs(winRtInstance));
    }





    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::PickerConfirmedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapPickerConfirmedEventArgs(::Windows::UI::Xaml::Controls::PickerConfirmedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::PickerConfirmedEventArgs^ UnwrapPickerConfirmedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> PickerConfirmedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapPickerConfirmedEventArgs(::Windows::UI::Xaml::Controls::PickerConfirmedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(PickerConfirmedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::PickerConfirmedEventArgs^ UnwrapPickerConfirmedEventArgs(Local<Value> value) {
     return PickerConfirmedEventArgs::Unwrap<PickerConfirmedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitPickerConfirmedEventArgs(Local<Object> exports) {
    PickerConfirmedEventArgs::Init(exports);
  }

  class TimePickedEventArgs : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("TimePickedEventArgs").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);





          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("newTime").ToLocalChecked(), NewTimeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("oldTime").ToLocalChecked(), OldTimeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);



        Nan::Set(exports, Nan::New<String>("TimePickedEventArgs").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      TimePickedEventArgs(::Windows::UI::Xaml::Controls::TimePickedEventArgs^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::TimePickedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickedEventArgs^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::TimePickedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::TimePickedEventArgs();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      TimePickedEventArgs *wrapperInstance = new TimePickedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickedEventArgs^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::TimePickedEventArgs^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::TimePickedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapTimePickedEventArgs(winRtInstance));
    }





    static void NewTimeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickedEventArgs^>(info.This())) {
        return;
      }

      TimePickedEventArgs *wrapper = TimePickedEventArgs::Unwrap<TimePickedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::TimeSpan result = wrapper->_instance->NewTime;
        info.GetReturnValue().Set(Nan::New<Number>(result.Duration/10000.0));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OldTimeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickedEventArgs^>(info.This())) {
        return;
      }

      TimePickedEventArgs *wrapper = TimePickedEventArgs::Unwrap<TimePickedEventArgs>(info.This());

      try  {
        ::Windows::Foundation::TimeSpan result = wrapper->_instance->OldTime;
        info.GetReturnValue().Set(Nan::New<Number>(result.Duration/10000.0));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    private:
      ::Windows::UI::Xaml::Controls::TimePickedEventArgs^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapTimePickedEventArgs(::Windows::UI::Xaml::Controls::TimePickedEventArgs^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::TimePickedEventArgs^ UnwrapTimePickedEventArgs(Local<Value> value);
  };

  Persistent<FunctionTemplate> TimePickedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapTimePickedEventArgs(::Windows::UI::Xaml::Controls::TimePickedEventArgs^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(TimePickedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::TimePickedEventArgs^ UnwrapTimePickedEventArgs(Local<Value> value) {
     return TimePickedEventArgs::Unwrap<TimePickedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitTimePickedEventArgs(Local<Object> exports) {
    TimePickedEventArgs::Init(exports);
  }

  class DatePickerFlyoutPresenter : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("DatePickerFlyoutPresenter").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("DatePickerFlyoutPresenter").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      DatePickerFlyoutPresenter(::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      DatePickerFlyoutPresenter *wrapperInstance = new DatePickerFlyoutPresenter(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapDatePickerFlyoutPresenter(winRtInstance));
    }





    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyoutPresenter *wrapper = DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapDatePickerFlyoutPresenter(::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^ UnwrapDatePickerFlyoutPresenter(Local<Value> value);
  };

  Persistent<FunctionTemplate> DatePickerFlyoutPresenter::s_constructorTemplate;

  v8::Local<v8::Value> WrapDatePickerFlyoutPresenter(::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(DatePickerFlyoutPresenter::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::DatePickerFlyoutPresenter^ UnwrapDatePickerFlyoutPresenter(Local<Value> value) {
     return DatePickerFlyoutPresenter::Unwrap<DatePickerFlyoutPresenter>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitDatePickerFlyoutPresenter(Local<Object> exports) {
    DatePickerFlyoutPresenter::Init(exports);
  }

  class ListPickerFlyoutPresenter : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ListPickerFlyoutPresenter").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("ListPickerFlyoutPresenter").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ListPickerFlyoutPresenter(::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ListPickerFlyoutPresenter *wrapperInstance = new ListPickerFlyoutPresenter(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapListPickerFlyoutPresenter(winRtInstance));
    }





    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyoutPresenter *wrapper = ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapListPickerFlyoutPresenter(::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^ UnwrapListPickerFlyoutPresenter(Local<Value> value);
  };

  Persistent<FunctionTemplate> ListPickerFlyoutPresenter::s_constructorTemplate;

  v8::Local<v8::Value> WrapListPickerFlyoutPresenter(::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ListPickerFlyoutPresenter::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ListPickerFlyoutPresenter^ UnwrapListPickerFlyoutPresenter(Local<Value> value) {
     return ListPickerFlyoutPresenter::Unwrap<ListPickerFlyoutPresenter>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitListPickerFlyoutPresenter(Local<Object> exports) {
    ListPickerFlyoutPresenter::Init(exports);
  }

  class TimePickerFlyoutPresenter : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("TimePickerFlyoutPresenter").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("TimePickerFlyoutPresenter").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      TimePickerFlyoutPresenter(::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      TimePickerFlyoutPresenter *wrapperInstance = new TimePickerFlyoutPresenter(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapTimePickerFlyoutPresenter(winRtInstance));
    }





    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyoutPresenter *wrapper = TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapTimePickerFlyoutPresenter(::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^ UnwrapTimePickerFlyoutPresenter(Local<Value> value);
  };

  Persistent<FunctionTemplate> TimePickerFlyoutPresenter::s_constructorTemplate;

  v8::Local<v8::Value> WrapTimePickerFlyoutPresenter(::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(TimePickerFlyoutPresenter::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::TimePickerFlyoutPresenter^ UnwrapTimePickerFlyoutPresenter(Local<Value> value) {
     return TimePickerFlyoutPresenter::Unwrap<TimePickerFlyoutPresenter>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitTimePickerFlyoutPresenter(Local<Object> exports) {
    TimePickerFlyoutPresenter::Init(exports);
  }

  class PickerFlyoutPresenter : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("PickerFlyoutPresenter").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("PickerFlyoutPresenter").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      PickerFlyoutPresenter(::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      PickerFlyoutPresenter *wrapperInstance = new PickerFlyoutPresenter(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapPickerFlyoutPresenter(winRtInstance));
    }





    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyoutPresenter *wrapper = PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapPickerFlyoutPresenter(::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^ UnwrapPickerFlyoutPresenter(Local<Value> value);
  };

  Persistent<FunctionTemplate> PickerFlyoutPresenter::s_constructorTemplate;

  v8::Local<v8::Value> WrapPickerFlyoutPresenter(::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(PickerFlyoutPresenter::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::PickerFlyoutPresenter^ UnwrapPickerFlyoutPresenter(Local<Value> value) {
     return PickerFlyoutPresenter::Unwrap<PickerFlyoutPresenter>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitPickerFlyoutPresenter(Local<Object> exports) {
    PickerFlyoutPresenter::Init(exports);
  }

  class Pivot : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("Pivot").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("titleTemplate").ToLocalChecked(), TitleTemplateGetter, TitleTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("title").ToLocalChecked(), TitleGetter, TitleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedItem").ToLocalChecked(), SelectedItemGetter, SelectedItemSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedIndex").ToLocalChecked(), SelectedIndexGetter, SelectedIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isLocked").ToLocalChecked(), IsLockedGetter, IsLockedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerTemplate").ToLocalChecked(), HeaderTemplateGetter, HeaderTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("rightHeaderTemplate").ToLocalChecked(), RightHeaderTemplateGetter, RightHeaderTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("rightHeader").ToLocalChecked(), RightHeaderGetter, RightHeaderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("leftHeaderTemplate").ToLocalChecked(), LeftHeaderTemplateGetter, LeftHeaderTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("leftHeader").ToLocalChecked(), LeftHeaderGetter, LeftHeaderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHeaderItemsCarouselEnabled").ToLocalChecked(), IsHeaderItemsCarouselEnabledGetter, IsHeaderItemsCarouselEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("headerFocusVisualPlacement").ToLocalChecked(), HeaderFocusVisualPlacementGetter, HeaderFocusVisualPlacementSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsPanel").ToLocalChecked(), ItemsPanelGetter, ItemsPanelSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsSource").ToLocalChecked(), ItemsSourceGetter, ItemsSourceSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemTemplateSelector").ToLocalChecked(), ItemTemplateSelectorGetter, ItemTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemTemplate").ToLocalChecked(), ItemTemplateGetter, ItemTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerStyleSelector").ToLocalChecked(), ItemContainerStyleSelectorGetter, ItemContainerStyleSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerStyle").ToLocalChecked(), ItemContainerStyleGetter, ItemContainerStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupStyleSelector").ToLocalChecked(), GroupStyleSelectorGetter, GroupStyleSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerTransitions").ToLocalChecked(), ItemContainerTransitionsGetter, ItemContainerTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("displayMemberPath").ToLocalChecked(), DisplayMemberPathGetter, DisplayMemberPathSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemContainerGenerator").ToLocalChecked(), ItemContainerGeneratorGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("items").ToLocalChecked(), ItemsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("groupStyle").ToLocalChecked(), GroupStyleGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isGrouping").ToLocalChecked(), IsGroupingGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsPanelRoot").ToLocalChecked(), ItemsPanelRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetMethod(constructor, "getSlideInAnimationGroup", GetSlideInAnimationGroup);
        Nan::SetMethod(constructor, "setSlideInAnimationGroup", SetSlideInAnimationGroup);
        Nan::SetAccessor(constructor, Nan::New<String>("isLockedProperty").ToLocalChecked(), IsLockedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedItemProperty").ToLocalChecked(), SelectedItemPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("slideInAnimationGroupProperty").ToLocalChecked(), SlideInAnimationGroupPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("titleProperty").ToLocalChecked(), TitlePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("titleTemplateProperty").ToLocalChecked(), TitleTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerTemplateProperty").ToLocalChecked(), HeaderTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedIndexProperty").ToLocalChecked(), SelectedIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("leftHeaderProperty").ToLocalChecked(), LeftHeaderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("leftHeaderTemplateProperty").ToLocalChecked(), LeftHeaderTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightHeaderProperty").ToLocalChecked(), RightHeaderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightHeaderTemplateProperty").ToLocalChecked(), RightHeaderTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHeaderItemsCarouselEnabledProperty").ToLocalChecked(), IsHeaderItemsCarouselEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("headerFocusVisualPlacementProperty").ToLocalChecked(), HeaderFocusVisualPlacementPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("displayMemberPathProperty").ToLocalChecked(), DisplayMemberPathPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("groupStyleSelectorProperty").ToLocalChecked(), GroupStyleSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isGroupingProperty").ToLocalChecked(), IsGroupingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerStyleProperty").ToLocalChecked(), ItemContainerStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerStyleSelectorProperty").ToLocalChecked(), ItemContainerStyleSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemContainerTransitionsProperty").ToLocalChecked(), ItemContainerTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemTemplateProperty").ToLocalChecked(), ItemTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemTemplateSelectorProperty").ToLocalChecked(), ItemTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemsPanelProperty").ToLocalChecked(), ItemsPanelPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemsSourceProperty").ToLocalChecked(), ItemsSourcePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("Pivot").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      Pivot(::Windows::UI::Xaml::Controls::Pivot^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::Pivot^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::Pivot^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::Pivot();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      Pivot *wrapperInstance = new Pivot(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::Pivot^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::Pivot^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapPivot(winRtInstance));
    }





    static void GetSlideInAnimationGroup(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 1
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::FrameworkElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::FrameworkElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          ::Windows::UI::Xaml::Controls::PivotSlideInAnimationGroup result;
          result = ::Windows::UI::Xaml::Controls::Pivot::GetSlideInAnimationGroup(arg0);
          info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void SetSlideInAnimationGroup(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info[0])
        && info[1]->IsInt32())
      {
        try
        {
          ::Windows::UI::Xaml::FrameworkElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::FrameworkElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          ::Windows::UI::Xaml::Controls::PivotSlideInAnimationGroup arg1 = static_cast<::Windows::UI::Xaml::Controls::PivotSlideInAnimationGroup>(Nan::To<int32_t>(info[1]).FromMaybe(0));
          
          ::Windows::UI::Xaml::Controls::Pivot::SetSlideInAnimationGroup(arg0, arg1);
          return;
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else  {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }
    }

    static void TitleTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->TitleTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TitleTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->TitleTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TitleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Title;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TitleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Title = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->SelectedItem;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedItemSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectedItem = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try  {
        int result = wrapper->_instance->SelectedIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SelectedIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsLockedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try  {
        bool result = wrapper->_instance->IsLocked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsLockedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsLocked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->HeaderTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->HeaderTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RightHeaderTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->RightHeaderTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RightHeaderTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RightHeaderTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RightHeaderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->RightHeader;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RightHeaderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RightHeader = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LeftHeaderTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->LeftHeaderTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LeftHeaderTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->LeftHeaderTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LeftHeaderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->LeftHeader;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LeftHeaderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->LeftHeader = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHeaderItemsCarouselEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try  {
        bool result = wrapper->_instance->IsHeaderItemsCarouselEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHeaderItemsCarouselEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHeaderItemsCarouselEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeaderFocusVisualPlacementGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::PivotHeaderFocusVisualPlacement result = wrapper->_instance->HeaderFocusVisualPlacement;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderFocusVisualPlacementSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This())) {
        return;
      }

      Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::PivotHeaderFocusVisualPlacement winRtValue = static_cast<::Windows::UI::Xaml::Controls::PivotHeaderFocusVisualPlacement>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HeaderFocusVisualPlacement = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemsPanelGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ result = wrapper->_instance->ItemsPanel;
        info.GetReturnValue().Set(WrapItemsPanelTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsPanelSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ItemsPanelTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ItemsPanelTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemsPanel = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemsSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->ItemsSource;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsSourceSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemsSource = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ItemTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ItemTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerStyleSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::StyleSelector^ result = wrapper->_instance->ItemContainerStyleSelector;
        info.GetReturnValue().Set(WrapStyleSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerStyleSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::StyleSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::StyleSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::StyleSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerStyleSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->ItemContainerStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void GroupStyleSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::GroupStyleSelector^ result = wrapper->_instance->GroupStyleSelector;
        info.GetReturnValue().Set(WrapGroupStyleSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupStyleSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::GroupStyleSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::GroupStyleSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->GroupStyleSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ItemContainerTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemContainerTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemContainerTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DisplayMemberPathGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->DisplayMemberPath;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DisplayMemberPathSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->DisplayMemberPath = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemContainerGeneratorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemContainerGenerator^ result = wrapper->_instance->ItemContainerGenerator;
        info.GetReturnValue().Set(WrapItemContainerGenerator(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ItemCollection^ result = wrapper->_instance->Items;
        info.GetReturnValue().Set(WrapItemCollection(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void GroupStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::Foundation::Collections::IObservableVector<::Windows::UI::Xaml::Controls::GroupStyle^>^ result = wrapper->_instance->GroupStyle;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "IObservableVector`1", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsGroupingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        bool result = wrapper->_instance->IsGrouping;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsPanelRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ItemsControl^>(info.This())) {
        return;
      }

      ItemsControl *wrapper = ItemsControl::Unwrap<ItemsControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Panel^ result = wrapper->_instance->ItemsPanelRoot;
        info.GetReturnValue().Set(WrapPanel(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void IsLockedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Pivot::IsLockedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedItemPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Pivot::SelectedItemProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SlideInAnimationGroupPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Pivot::SlideInAnimationGroupProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TitlePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Pivot::TitleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TitleTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Pivot::TitleTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Pivot::HeaderTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Pivot::SelectedIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LeftHeaderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Pivot::LeftHeaderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LeftHeaderTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Pivot::LeftHeaderTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightHeaderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Pivot::RightHeaderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightHeaderTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Pivot::RightHeaderTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHeaderItemsCarouselEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Pivot::IsHeaderItemsCarouselEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeaderFocusVisualPlacementPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Pivot::HeaderFocusVisualPlacementProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DisplayMemberPathPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::DisplayMemberPathProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GroupStyleSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::GroupStyleSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsGroupingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::IsGroupingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerStyleSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerStyleSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemContainerTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemContainerTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemsPanelPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemsPanelProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemsSourcePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ItemsControl::ItemsSourceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"pivotItemLoaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PivotItemLoaded::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Pivot^, ::Windows::UI::Xaml::Controls::PivotItemEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Pivot^ arg0, ::Windows::UI::Xaml::Controls::PivotItemEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapPivot(arg0);
                  wrappedArg1 = WrapPivotItemEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pivotItemLoading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PivotItemLoading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Pivot^, ::Windows::UI::Xaml::Controls::PivotItemEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Pivot^ arg0, ::Windows::UI::Xaml::Controls::PivotItemEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapPivot(arg0);
                  wrappedArg1 = WrapPivotItemEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pivotItemUnloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PivotItemUnloaded::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Pivot^, ::Windows::UI::Xaml::Controls::PivotItemEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Pivot^ arg0, ::Windows::UI::Xaml::Controls::PivotItemEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapPivot(arg0);
                  wrappedArg1 = WrapPivotItemEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pivotItemUnloading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PivotItemUnloading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Pivot^, ::Windows::UI::Xaml::Controls::PivotItemEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Pivot^ arg0, ::Windows::UI::Xaml::Controls::PivotItemEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapPivot(arg0);
                  wrappedArg1 = WrapPivotItemEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SelectionChanged::add(
            ref new ::Windows::UI::Xaml::Controls::SelectionChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = WrapSelectionChangedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"pivotItemLoaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pivotItemLoading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pivotItemUnloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pivotItemUnloading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"pivotItemLoaded", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->PivotItemLoaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pivotItemLoading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->PivotItemLoading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pivotItemUnloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->PivotItemUnloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pivotItemUnloading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->PivotItemUnloading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"selectionChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->SelectionChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Pivot^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          Pivot *wrapper = Pivot::Unwrap<Pivot>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::Pivot^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapPivot(::Windows::UI::Xaml::Controls::Pivot^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::Pivot^ UnwrapPivot(Local<Value> value);
  };

  Persistent<FunctionTemplate> Pivot::s_constructorTemplate;

  v8::Local<v8::Value> WrapPivot(::Windows::UI::Xaml::Controls::Pivot^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(Pivot::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::Pivot^ UnwrapPivot(Local<Value> value) {
     return Pivot::Unwrap<Pivot>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitPivot(Local<Object> exports) {
    Pivot::Init(exports);
  }

  class PivotItem : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("PivotItem").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);




          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("header").ToLocalChecked(), HeaderGetter, HeaderSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTransitions").ToLocalChecked(), ContentTransitionsGetter, ContentTransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateSelector").ToLocalChecked(), ContentTemplateSelectorGetter, ContentTemplateSelectorSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplate").ToLocalChecked(), ContentTemplateGetter, ContentTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contentTemplateRoot").ToLocalChecked(), ContentTemplateRootGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontSize").ToLocalChecked(), FontSizeGetter, FontSizeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontFamily").ToLocalChecked(), FontFamilyGetter, FontFamilySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabIndex").ToLocalChecked(), TabIndexGetter, TabIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("characterSpacing").ToLocalChecked(), CharacterSpacingGetter, CharacterSpacingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderThickness").ToLocalChecked(), BorderThicknessGetter, BorderThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("borderBrush").ToLocalChecked(), BorderBrushGetter, BorderBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStretch").ToLocalChecked(), FontStretchGetter, FontStretchSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTabStop").ToLocalChecked(), IsTabStopGetter, IsTabStopSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isEnabled").ToLocalChecked(), IsEnabledGetter, IsEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalContentAlignment").ToLocalChecked(), HorizontalContentAlignmentGetter, HorizontalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("padding").ToLocalChecked(), PaddingGetter, PaddingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("foreground").ToLocalChecked(), ForegroundGetter, ForegroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontWeight").ToLocalChecked(), FontWeightGetter, FontWeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fontStyle").ToLocalChecked(), FontStyleGetter, FontStyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("background").ToLocalChecked(), BackgroundGetter, BackgroundSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalContentAlignment").ToLocalChecked(), VerticalContentAlignmentGetter, VerticalContentAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("template").ToLocalChecked(), TemplateGetter, TemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabNavigation").ToLocalChecked(), TabNavigationGetter, TabNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusState").ToLocalChecked(), FocusStateGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTextScaleFactorEnabled").ToLocalChecked(), IsTextScaleFactorEnabledGetter, IsTextScaleFactorEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useSystemFocusVisuals").ToLocalChecked(), UseSystemFocusVisualsGetter, UseSystemFocusVisualsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDown").ToLocalChecked(), XYFocusDownGetter, XYFocusDownSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUp").ToLocalChecked(), XYFocusUpGetter, XYFocusUpSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngagementEnabled").ToLocalChecked(), IsFocusEngagementEnabledGetter, IsFocusEngagementEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeft").ToLocalChecked(), XYFocusLeftGetter, XYFocusLeftSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRight").ToLocalChecked(), XYFocusRightGetter, XYFocusRightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requiresPointer").ToLocalChecked(), RequiresPointerGetter, RequiresPointerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isFocusEngaged").ToLocalChecked(), IsFocusEngagedGetter, IsFocusEngagedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("defaultStyleResourceUri").ToLocalChecked(), DefaultStyleResourceUriGetter, DefaultStyleResourceUriSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("height").ToLocalChecked(), HeightGetter, HeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("flowDirection").ToLocalChecked(), FlowDirectionGetter, FlowDirectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minHeight").ToLocalChecked(), MinHeightGetter, MinHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dataContext").ToLocalChecked(), DataContextGetter, DataContextSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("name").ToLocalChecked(), NameGetter, NameSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minWidth").ToLocalChecked(), MinWidthGetter, MinWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxWidth").ToLocalChecked(), MaxWidthGetter, MaxWidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxHeight").ToLocalChecked(), MaxHeightGetter, MaxHeightSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("margin").ToLocalChecked(), MarginGetter, MarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter, LanguageSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("horizontalAlignment").ToLocalChecked(), HorizontalAlignmentGetter, HorizontalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("resources").ToLocalChecked(), ResourcesGetter, ResourcesSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("width").ToLocalChecked(), WidthGetter, WidthSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verticalAlignment").ToLocalChecked(), VerticalAlignmentGetter, VerticalAlignmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tag").ToLocalChecked(), TagGetter, TagSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("style").ToLocalChecked(), StyleGetter, StyleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("baseUri").ToLocalChecked(), BaseUriGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualHeight").ToLocalChecked(), ActualHeightGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("parent").ToLocalChecked(), ParentGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("triggers").ToLocalChecked(), TriggersGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actualWidth").ToLocalChecked(), ActualWidthGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("requestedTheme").ToLocalChecked(), RequestedThemeGetter, RequestedThemeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualMargin").ToLocalChecked(), FocusVisualMarginGetter, FocusVisualMarginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryBrush").ToLocalChecked(), FocusVisualSecondaryBrushGetter, FocusVisualSecondaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryThickness").ToLocalChecked(), FocusVisualPrimaryThicknessGetter, FocusVisualPrimaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualPrimaryBrush").ToLocalChecked(), FocusVisualPrimaryBrushGetter, FocusVisualPrimaryBrushSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("focusVisualSecondaryThickness").ToLocalChecked(), FocusVisualSecondaryThicknessGetter, FocusVisualSecondaryThicknessSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isTapEnabled").ToLocalChecked(), IsTapEnabledGetter, IsTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowDrop").ToLocalChecked(), AllowDropGetter, AllowDropSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHoldingEnabled").ToLocalChecked(), IsHoldingEnabledGetter, IsHoldingEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isHitTestVisible").ToLocalChecked(), IsHitTestVisibleGetter, IsHitTestVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isDoubleTapEnabled").ToLocalChecked(), IsDoubleTapEnabledGetter, IsDoubleTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("manipulationMode").ToLocalChecked(), ManipulationModeGetter, ManipulationModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clip").ToLocalChecked(), ClipGetter, ClipSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cacheMode").ToLocalChecked(), CacheModeGetter, CacheModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isRightTapEnabled").ToLocalChecked(), IsRightTapEnabledGetter, IsRightTapEnabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransform").ToLocalChecked(), RenderTransformGetter, RenderTransformSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("visibility").ToLocalChecked(), VisibilityGetter, VisibilitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("useLayoutRounding").ToLocalChecked(), UseLayoutRoundingGetter, UseLayoutRoundingSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transitions").ToLocalChecked(), TransitionsGetter, TransitionsSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderTransformOrigin").ToLocalChecked(), RenderTransformOriginGetter, RenderTransformOriginSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("projection").ToLocalChecked(), ProjectionGetter, ProjectionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("opacity").ToLocalChecked(), OpacityGetter, OpacitySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("desiredSize").ToLocalChecked(), DesiredSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pointerCaptures").ToLocalChecked(), PointerCapturesGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("renderSize").ToLocalChecked(), RenderSizeGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("compositeMode").ToLocalChecked(), CompositeModeGetter, CompositeModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("transform3D").ToLocalChecked(), Transform3DGetter, Transform3DSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("canDrag").ToLocalChecked(), CanDragGetter, CanDragSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("isAccessKeyScope").ToLocalChecked(), IsAccessKeyScopeGetter, IsAccessKeyScopeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("exitDisplayModeOnAccessKeyInvoked").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedGetter, ExitDisplayModeOnAccessKeyInvokedSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contextFlyout").ToLocalChecked(), ContextFlyoutGetter, ContextFlyoutSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKeyScopeOwner").ToLocalChecked(), AccessKeyScopeOwnerGetter, AccessKeyScopeOwnerSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("accessKey").ToLocalChecked(), AccessKeyGetter, AccessKeySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusUpNavigationStrategy").ToLocalChecked(), XYFocusUpNavigationStrategyGetter, XYFocusUpNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("highContrastAdjustment").ToLocalChecked(), HighContrastAdjustmentGetter, HighContrastAdjustmentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusRightNavigationStrategy").ToLocalChecked(), XYFocusRightNavigationStrategyGetter, XYFocusRightNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusLeftNavigationStrategy").ToLocalChecked(), XYFocusLeftNavigationStrategyGetter, XYFocusLeftNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipHorizontalOffset").ToLocalChecked(), KeyTipHorizontalOffsetGetter, KeyTipHorizontalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusKeyboardNavigation").ToLocalChecked(), XYFocusKeyboardNavigationGetter, XYFocusKeyboardNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("xYFocusDownNavigationStrategy").ToLocalChecked(), XYFocusDownNavigationStrategyGetter, XYFocusDownNavigationStrategySetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tabFocusNavigation").ToLocalChecked(), TabFocusNavigationGetter, TabFocusNavigationSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipVerticalOffset").ToLocalChecked(), KeyTipVerticalOffsetGetter, KeyTipVerticalOffsetSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("keyTipPlacementMode").ToLocalChecked(), KeyTipPlacementModeGetter, KeyTipPlacementModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lights").ToLocalChecked(), LightsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("headerProperty").ToLocalChecked(), HeaderPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateProperty").ToLocalChecked(), ContentTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTemplateSelectorProperty").ToLocalChecked(), ContentTemplateSelectorPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentTransitionsProperty").ToLocalChecked(), ContentTransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontWeightProperty").ToLocalChecked(), FontWeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("backgroundProperty").ToLocalChecked(), BackgroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderBrushProperty").ToLocalChecked(), BorderBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("borderThicknessProperty").ToLocalChecked(), BorderThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("characterSpacingProperty").ToLocalChecked(), CharacterSpacingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleKeyProperty").ToLocalChecked(), DefaultStyleKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusStateProperty").ToLocalChecked(), FocusStatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontFamilyProperty").ToLocalChecked(), FontFamilyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontSizeProperty").ToLocalChecked(), FontSizePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStretchProperty").ToLocalChecked(), FontStretchPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("fontStyleProperty").ToLocalChecked(), FontStylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("foregroundProperty").ToLocalChecked(), ForegroundPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalContentAlignmentProperty").ToLocalChecked(), HorizontalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isEnabledProperty").ToLocalChecked(), IsEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTabStopProperty").ToLocalChecked(), IsTabStopPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("paddingProperty").ToLocalChecked(), PaddingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabIndexProperty").ToLocalChecked(), TabIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabNavigationProperty").ToLocalChecked(), TabNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("templateProperty").ToLocalChecked(), TemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalContentAlignmentProperty").ToLocalChecked(), VerticalContentAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTextScaleFactorEnabledProperty").ToLocalChecked(), IsTextScaleFactorEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateFocusTargetProperty").ToLocalChecked(), IsTemplateFocusTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useSystemFocusVisualsProperty").ToLocalChecked(), UseSystemFocusVisualsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requiresPointerProperty").ToLocalChecked(), RequiresPointerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownProperty").ToLocalChecked(), XYFocusDownPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftProperty").ToLocalChecked(), XYFocusLeftPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpProperty").ToLocalChecked(), XYFocusUpPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightProperty").ToLocalChecked(), XYFocusRightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagedProperty").ToLocalChecked(), IsFocusEngagedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isFocusEngagementEnabledProperty").ToLocalChecked(), IsFocusEngagementEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTemplateKeyTipTargetProperty").ToLocalChecked(), IsTemplateKeyTipTargetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("defaultStyleResourceUriProperty").ToLocalChecked(), DefaultStyleResourceUriPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("styleProperty").ToLocalChecked(), StylePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualHeightProperty").ToLocalChecked(), ActualHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("actualWidthProperty").ToLocalChecked(), ActualWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dataContextProperty").ToLocalChecked(), DataContextPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("flowDirectionProperty").ToLocalChecked(), FlowDirectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("heightProperty").ToLocalChecked(), HeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("horizontalAlignmentProperty").ToLocalChecked(), HorizontalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("languageProperty").ToLocalChecked(), LanguagePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("marginProperty").ToLocalChecked(), MarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxHeightProperty").ToLocalChecked(), MaxHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxWidthProperty").ToLocalChecked(), MaxWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minHeightProperty").ToLocalChecked(), MinHeightPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minWidthProperty").ToLocalChecked(), MinWidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("nameProperty").ToLocalChecked(), NamePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tagProperty").ToLocalChecked(), TagPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("verticalAlignmentProperty").ToLocalChecked(), VerticalAlignmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("widthProperty").ToLocalChecked(), WidthPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("requestedThemeProperty").ToLocalChecked(), RequestedThemePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualMarginProperty").ToLocalChecked(), FocusVisualMarginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryBrushProperty").ToLocalChecked(), FocusVisualPrimaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualPrimaryThicknessProperty").ToLocalChecked(), FocusVisualPrimaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryBrushProperty").ToLocalChecked(), FocusVisualSecondaryBrushPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("focusVisualSecondaryThicknessProperty").ToLocalChecked(), FocusVisualSecondaryThicknessPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerExitedEvent").ToLocalChecked(), PointerExitedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowDropProperty").ToLocalChecked(), AllowDropPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("cacheModeProperty").ToLocalChecked(), CacheModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("clipProperty").ToLocalChecked(), ClipPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("doubleTappedEvent").ToLocalChecked(), DoubleTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragEnterEvent").ToLocalChecked(), DragEnterEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragLeaveEvent").ToLocalChecked(), DragLeaveEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dragOverEvent").ToLocalChecked(), DragOverEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dropEvent").ToLocalChecked(), DropEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("holdingEvent").ToLocalChecked(), HoldingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isDoubleTapEnabledProperty").ToLocalChecked(), IsDoubleTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHitTestVisibleProperty").ToLocalChecked(), IsHitTestVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isHoldingEnabledProperty").ToLocalChecked(), IsHoldingEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isRightTapEnabledProperty").ToLocalChecked(), IsRightTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isTapEnabledProperty").ToLocalChecked(), IsTapEnabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyDownEvent").ToLocalChecked(), KeyDownEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyUpEvent").ToLocalChecked(), KeyUpEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationCompletedEvent").ToLocalChecked(), ManipulationCompletedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationDeltaEvent").ToLocalChecked(), ManipulationDeltaEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationInertiaStartingEvent").ToLocalChecked(), ManipulationInertiaStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationModeProperty").ToLocalChecked(), ManipulationModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartedEvent").ToLocalChecked(), ManipulationStartedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("manipulationStartingEvent").ToLocalChecked(), ManipulationStartingEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("opacityProperty").ToLocalChecked(), OpacityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCanceledEvent").ToLocalChecked(), PointerCanceledEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCaptureLostEvent").ToLocalChecked(), PointerCaptureLostEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerCapturesProperty").ToLocalChecked(), PointerCapturesPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerEnteredEvent").ToLocalChecked(), PointerEnteredEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerMovedEvent").ToLocalChecked(), PointerMovedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerPressedEvent").ToLocalChecked(), PointerPressedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerReleasedEvent").ToLocalChecked(), PointerReleasedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("pointerWheelChangedEvent").ToLocalChecked(), PointerWheelChangedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("projectionProperty").ToLocalChecked(), ProjectionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformOriginProperty").ToLocalChecked(), RenderTransformOriginPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("renderTransformProperty").ToLocalChecked(), RenderTransformPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("rightTappedEvent").ToLocalChecked(), RightTappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tappedEvent").ToLocalChecked(), TappedEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transitionsProperty").ToLocalChecked(), TransitionsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("useLayoutRoundingProperty").ToLocalChecked(), UseLayoutRoundingPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("visibilityProperty").ToLocalChecked(), VisibilityPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("compositeModeProperty").ToLocalChecked(), CompositeModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("transform3DProperty").ToLocalChecked(), Transform3DPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("canDragProperty").ToLocalChecked(), CanDragPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("isAccessKeyScopeProperty").ToLocalChecked(), IsAccessKeyScopePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("exitDisplayModeOnAccessKeyInvokedProperty").ToLocalChecked(), ExitDisplayModeOnAccessKeyInvokedPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contextFlyoutProperty").ToLocalChecked(), ContextFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyProperty").ToLocalChecked(), AccessKeyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("accessKeyScopeOwnerProperty").ToLocalChecked(), AccessKeyScopeOwnerPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusKeyboardNavigationProperty").ToLocalChecked(), XYFocusKeyboardNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("highContrastAdjustmentProperty").ToLocalChecked(), HighContrastAdjustmentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipHorizontalOffsetProperty").ToLocalChecked(), KeyTipHorizontalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipPlacementModeProperty").ToLocalChecked(), KeyTipPlacementModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("keyTipVerticalOffsetProperty").ToLocalChecked(), KeyTipVerticalOffsetPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightsProperty").ToLocalChecked(), LightsPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("tabFocusNavigationProperty").ToLocalChecked(), TabFocusNavigationPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusDownNavigationStrategyProperty").ToLocalChecked(), XYFocusDownNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusLeftNavigationStrategyProperty").ToLocalChecked(), XYFocusLeftNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusRightNavigationStrategyProperty").ToLocalChecked(), XYFocusRightNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("xYFocusUpNavigationStrategyProperty").ToLocalChecked(), XYFocusUpNavigationStrategyPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("noFocusCandidateFoundEvent").ToLocalChecked(), NoFocusCandidateFoundEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("losingFocusEvent").ToLocalChecked(), LosingFocusEventGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("gettingFocusEvent").ToLocalChecked(), GettingFocusEventGetter);


        Nan::Set(exports, Nan::New<String>("PivotItem").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      PivotItem(::Windows::UI::Xaml::Controls::PivotItem^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::PivotItem^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::PivotItem^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::PivotItem();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      PivotItem *wrapperInstance = new PivotItem(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::PivotItem^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::PivotItem^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapPivotItem(winRtInstance));
    }





    static void HeaderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This())) {
        return;
      }

      PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Header;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeaderSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This())) {
        return;
      }

      PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Header = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->ContentTransitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTransitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateSelectorGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ result = wrapper->_instance->ContentTemplateSelector;
        info.GetReturnValue().Set(WrapDataTemplateSelector(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSelectorSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::DataTemplateSelector^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::DataTemplateSelector^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplateSelector = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ContentTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContentTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContentTemplateRootGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ContentControl^>(info.This())) {
        return;
      }

      ContentControl *wrapper = ContentControl::Unwrap<ContentControl>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->ContentTemplateRoot;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        double result = wrapper->_instance->FontSize;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontSizeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->FontSize = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontFamilyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::FontFamily^ result = wrapper->_instance->FontFamily;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "FontFamily", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontFamilySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::FontFamily^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::FontFamily^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::FontFamily^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FontFamily = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->TabIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CharacterSpacingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        int result = wrapper->_instance->CharacterSpacing;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CharacterSpacingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CharacterSpacing = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->BorderThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->BorderThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BorderBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->BorderBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BorderBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->BorderBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStretchGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStretch result = wrapper->_instance->FontStretch;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStretchSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStretch winRtValue = static_cast<::Windows::UI::Text::FontStretch>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStretch = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTabStopGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTabStop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTabStopSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTabStop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PaddingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Padding;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PaddingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Padding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ForegroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Foreground;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ForegroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Foreground = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontWeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontWeight result = wrapper->_instance->FontWeight;
        info.GetReturnValue().Set(FontWeightToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontWeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsFontWeightJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontWeight winRtValue = FontWeightFromJsObject(value);

        wrapper->_instance->FontWeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FontStyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Text::FontStyle result = wrapper->_instance->FontStyle;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FontStyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Text::FontStyle winRtValue = static_cast<::Windows::UI::Text::FontStyle>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FontStyle = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BackgroundGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->Background;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void BackgroundSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Background = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalContentAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalContentAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalContentAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalContentAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ControlTemplate^ result = wrapper->_instance->Template;
        info.GetReturnValue().Set(WrapControlTemplate(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ControlTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ControlTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::ControlTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Template = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::FocusState result = wrapper->_instance->FocusState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsTextScaleFactorEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTextScaleFactorEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTextScaleFactorEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseSystemFocusVisualsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->UseSystemFocusVisuals;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseSystemFocusVisualsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseSystemFocusVisuals = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusDown;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusDown = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusUp;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusUp = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagementEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngagementEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagementEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngagementEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusLeft;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusLeft = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->XYFocusRight;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->XYFocusRight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RequiresPointerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::RequiresPointer result = wrapper->_instance->RequiresPointer;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequiresPointerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::RequiresPointer winRtValue = static_cast<::Windows::UI::Xaml::Controls::RequiresPointer>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequiresPointer = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsFocusEngagedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        bool result = wrapper->_instance->IsFocusEngaged;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsFocusEngagedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsFocusEngaged = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DefaultStyleResourceUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->DefaultStyleResourceUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DefaultStyleResourceUriSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::Foundation::Uri^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Control^>(info.This())) {
        return;
      }

      Control *wrapper = Control::Unwrap<Control>(info.This());

      try {

        ::Windows::Foundation::Uri^ winRtValue = dynamic_cast<::Windows::Foundation::Uri^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DefaultStyleResourceUri = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Height;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Height = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FlowDirectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::FlowDirection result = wrapper->_instance->FlowDirection;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FlowDirectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::FlowDirection winRtValue = static_cast<::Windows::UI::Xaml::FlowDirection>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->FlowDirection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DataContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->DataContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DataContextSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->DataContext = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void NameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Name;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void NameSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Name = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MinWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MinWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxWidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxWidth = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->MaxHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxHeightSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->MaxHeight = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->Margin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->Margin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LanguageSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->Language = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HorizontalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::HorizontalAlignment result = wrapper->_instance->HorizontalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HorizontalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::HorizontalAlignment winRtValue = static_cast<::Windows::UI::Xaml::HorizontalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HorizontalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ResourcesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ResourceDictionary^ result = wrapper->_instance->Resources;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "ResourceDictionary", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ResourcesSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::ResourceDictionary^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ResourceDictionary^ winRtValue = dynamic_cast<::Windows::UI::Xaml::ResourceDictionary^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Resources = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void WidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->Width;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void WidthSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Width = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VerticalAlignmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::VerticalAlignment result = wrapper->_instance->VerticalAlignment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VerticalAlignmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::VerticalAlignment winRtValue = static_cast<::Windows::UI::Xaml::VerticalAlignment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->VerticalAlignment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TagGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->Tag;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TagSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Tag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void StyleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Style^ result = wrapper->_instance->Style;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "Style", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void StyleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Style^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Style^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Style^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Style = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void BaseUriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->BaseUri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualHeightGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualHeight;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ParentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->Parent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TriggersGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::TriggerCollection^ result = wrapper->_instance->Triggers;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "TriggerCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ActualWidthGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        double result = wrapper->_instance->ActualWidth;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementTheme result = wrapper->_instance->RequestedTheme;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RequestedThemeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementTheme winRtValue = static_cast<::Windows::UI::Xaml::ElementTheme>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->RequestedTheme = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualMarginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualMargin;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualMarginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualMargin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualSecondaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualSecondaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualPrimaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualPrimaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualPrimaryBrushGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Brush^ result = wrapper->_instance->FocusVisualPrimaryBrush;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Brush", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualPrimaryBrushSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Brush^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Brush^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Brush^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->FocusVisualPrimaryBrush = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void FocusVisualSecondaryThicknessGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Thickness result = wrapper->_instance->FocusVisualSecondaryThickness;
        info.GetReturnValue().Set(ThicknessToJsObject(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void FocusVisualSecondaryThicknessSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!IsThicknessJsObject(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info.This())) {
        return;
      }

      FrameworkElement *wrapper = FrameworkElement::Unwrap<FrameworkElement>(info.This());

      try {

        ::Windows::UI::Xaml::Thickness winRtValue = ThicknessFromJsObject(value);

        wrapper->_instance->FocusVisualSecondaryThickness = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowDropGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->AllowDrop;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowDropSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowDrop = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHoldingEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHoldingEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHoldingEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHoldingEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsHitTestVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsHitTestVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsHitTestVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsHitTestVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsDoubleTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsDoubleTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsDoubleTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsDoubleTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ManipulationModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::ManipulationModes result = wrapper->_instance->ManipulationMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ManipulationModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::ManipulationModes winRtValue = static_cast<::Windows::UI::Xaml::Input::ManipulationModes>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ManipulationMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClipGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::RectangleGeometry^ result = wrapper->_instance->Clip;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "RectangleGeometry", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClipSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::RectangleGeometry^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::RectangleGeometry^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::RectangleGeometry^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Clip = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CacheModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::CacheMode^ result = wrapper->_instance->CacheMode;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "CacheMode", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CacheModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::CacheMode^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::CacheMode^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::CacheMode^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->CacheMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsRightTapEnabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsRightTapEnabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsRightTapEnabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsRightTapEnabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Transform^ result = wrapper->_instance->RenderTransform;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Transform", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Transform^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Transform^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Transform^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->RenderTransform = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void VisibilityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Visibility result = wrapper->_instance->Visibility;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void VisibilitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Visibility winRtValue = static_cast<::Windows::UI::Xaml::Visibility>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Visibility = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void UseLayoutRoundingGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->UseLayoutRounding;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void UseLayoutRoundingSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->UseLayoutRounding = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TransitionsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ result = wrapper->_instance->Transitions;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Animation", "TransitionCollection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TransitionsSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Animation::TransitionCollection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Animation::TransitionCollection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transitions = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void RenderTransformOriginGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Point result = wrapper->_instance->RenderTransformOrigin;
        info.GetReturnValue().Set(NodeRT::Utils::PointToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderTransformOriginSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsPoint(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::Foundation::Point winRtValue = NodeRT::Utils::PointFromJs(value);

        wrapper->_instance->RenderTransformOrigin = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ProjectionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Projection^ result = wrapper->_instance->Projection;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "Projection", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ProjectionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Projection^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Projection^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Projection^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Projection = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void OpacityGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->Opacity;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OpacitySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->Opacity = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DesiredSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->DesiredSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PointerCapturesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVectorView<::Windows::UI::Xaml::Input::Pointer^>^ result = wrapper->_instance->PointerCaptures;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::UI::Xaml::Input::Pointer^>::CreateVectorViewWrapper(result, 
            [](::Windows::UI::Xaml::Input::Pointer^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "Pointer", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Input::Pointer^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Input::Pointer^ {
              return dynamic_cast<::Windows::UI::Xaml::Input::Pointer^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void RenderSizeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Size result = wrapper->_instance->RenderSize;
        info.GetReturnValue().Set(NodeRT::Utils::SizeToJs(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::ElementCompositeMode result = wrapper->_instance->CompositeMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CompositeModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::ElementCompositeMode winRtValue = static_cast<::Windows::UI::Xaml::Media::ElementCompositeMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->CompositeMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void Transform3DGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ result = wrapper->_instance->Transform3D;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media.Media3D", "Transform3D", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void Transform3DSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Media::Media3D::Transform3D^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Media::Media3D::Transform3D^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Transform3D = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CanDragGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->CanDrag;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CanDragSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->CanDrag = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void IsAccessKeyScopeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->IsAccessKeyScope;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void IsAccessKeyScopeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->IsAccessKeyScope = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        bool result = wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ExitDisplayModeOnAccessKeyInvokedSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ExitDisplayModeOnAccessKeyInvoked = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ContextFlyoutGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ result = wrapper->_instance->ContextFlyout;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContextFlyoutSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ winRtValue = dynamic_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ContextFlyout = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyScopeOwnerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->AccessKeyScopeOwner;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeyScopeOwnerSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->AccessKeyScopeOwner = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AccessKeyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->AccessKey;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AccessKeySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->AccessKey = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusUpNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusUpNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusUpNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusUpNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void HighContrastAdjustmentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementHighContrastAdjustment result = wrapper->_instance->HighContrastAdjustment;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void HighContrastAdjustmentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::ElementHighContrastAdjustment winRtValue = static_cast<::Windows::UI::Xaml::ElementHighContrastAdjustment>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->HighContrastAdjustment = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusRightNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusRightNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusRightNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusRightNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusLeftNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusLeftNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusLeftNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusLeftNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipHorizontalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipHorizontalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipHorizontalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipHorizontalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusKeyboardNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode result = wrapper->_instance->XYFocusKeyboardNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusKeyboardNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusKeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusKeyboardNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void XYFocusDownNavigationStrategyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy result = wrapper->_instance->XYFocusDownNavigationStrategy;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void XYFocusDownNavigationStrategySetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::XYFocusNavigationStrategy winRtValue = static_cast<::Windows::UI::Xaml::Input::XYFocusNavigationStrategy>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->XYFocusDownNavigationStrategy = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TabFocusNavigationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyboardNavigationMode result = wrapper->_instance->TabFocusNavigation;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TabFocusNavigationSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyboardNavigationMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyboardNavigationMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->TabFocusNavigation = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipVerticalOffsetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        double result = wrapper->_instance->KeyTipVerticalOffset;
        info.GetReturnValue().Set(Nan::New<Number>(static_cast<double>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipVerticalOffsetSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        double winRtValue = Nan::To<double>(value).FromMaybe(0.0);

        wrapper->_instance->KeyTipVerticalOffset = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void KeyTipPlacementModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::UI::Xaml::Input::KeyTipPlacementMode result = wrapper->_instance->KeyTipPlacementMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void KeyTipPlacementModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try {

        ::Windows::UI::Xaml::Input::KeyTipPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Input::KeyTipPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->KeyTipPlacementMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(info.This())) {
        return;
      }

      UIElement *wrapper = UIElement::Unwrap<UIElement>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Windows::UI::Xaml::Media::XamlLight^>^ result = wrapper->_instance->Lights;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Windows::UI::Xaml::Media::XamlLight^>::CreateVectorWrapper(result, 
            [](::Windows::UI::Xaml::Media::XamlLight^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Media", "XamlLight", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Media::XamlLight^>(value);
            },
            [](Local<Value> value) -> ::Windows::UI::Xaml::Media::XamlLight^ {
              return dynamic_cast<::Windows::UI::Xaml::Media::XamlLight^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void HeaderPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::PivotItem::HeaderProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTemplateSelectorPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTemplateSelectorProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentTransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ContentControl::ContentTransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontWeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontWeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BackgroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BackgroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void BorderThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::BorderThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CharacterSpacingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::CharacterSpacingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusStatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FocusStateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontFamilyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontFamilyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontSizePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontSizeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStretchPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStretchProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FontStylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::FontStyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ForegroundPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ForegroundProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::HorizontalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTabStopPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTabStopProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PaddingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::PaddingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TabNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::TemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalContentAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::VerticalContentAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTextScaleFactorEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTextScaleFactorEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateFocusTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateFocusTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseSystemFocusVisualsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::UseSystemFocusVisualsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequiresPointerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::RequiresPointerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusDownProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusLeftProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusUpProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::XYFocusRightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsFocusEngagementEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsFocusEngagementEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTemplateKeyTipTargetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::IsTemplateKeyTipTargetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DefaultStyleResourceUriPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Control::DefaultStyleResourceUriProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void StylePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::StyleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ActualWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::ActualWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DataContextPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::DataContextProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FlowDirectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FlowDirectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HorizontalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::HorizontalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LanguagePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::LanguageProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MaxWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinHeightPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinHeightProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinWidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::MinWidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NamePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::NameProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TagPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::TagProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VerticalAlignmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::VerticalAlignmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void WidthPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::WidthProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RequestedThemePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::RequestedThemeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualMarginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualMarginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualPrimaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualPrimaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryBrushPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryBrushProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void FocusVisualSecondaryThicknessPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::FrameworkElement::FocusVisualSecondaryThicknessProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerExitedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerExitedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowDropPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AllowDropProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CacheModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CacheModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ClipPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ClipProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DoubleTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DoubleTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragEnterEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragEnterEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragLeaveEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragLeaveEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DragOverEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DragOverEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DropEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::DropEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HoldingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::HoldingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsDoubleTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsDoubleTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHitTestVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHitTestVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsHoldingEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsHoldingEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsRightTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsRightTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsTapEnabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsTapEnabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyDownEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyDownEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyUpEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::KeyUpEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationCompletedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationCompletedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationDeltaEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationDeltaEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationInertiaStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationInertiaStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ManipulationModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ManipulationStartingEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::ManipulationStartingEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OpacityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::OpacityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCanceledEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCanceledEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCaptureLostEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerCaptureLostEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerCapturesPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::PointerCapturesProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerEnteredEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerEnteredEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerMovedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerMovedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerPressedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerPressedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerReleasedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerReleasedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PointerWheelChangedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::PointerWheelChangedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ProjectionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ProjectionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformOriginPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformOriginProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RenderTransformPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::RenderTransformProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void RightTappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::RightTappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TappedEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::TappedEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TransitionsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TransitionsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void UseLayoutRoundingPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::UseLayoutRoundingProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void VisibilityPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::VisibilityProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CompositeModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CompositeModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void Transform3DPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::Transform3DProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void CanDragPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::CanDragProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void IsAccessKeyScopePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::IsAccessKeyScopeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ExitDisplayModeOnAccessKeyInvokedPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ExitDisplayModeOnAccessKeyInvokedProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContextFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::ContextFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AccessKeyScopeOwnerPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::AccessKeyScopeOwnerProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusKeyboardNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusKeyboardNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void HighContrastAdjustmentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::HighContrastAdjustmentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipHorizontalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipHorizontalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipPlacementModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipPlacementModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void KeyTipVerticalOffsetPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::KeyTipVerticalOffsetProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightsPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::LightsProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TabFocusNavigationPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::TabFocusNavigationProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusDownNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusDownNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusLeftNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusLeftNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusRightNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusRightNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void XYFocusUpNavigationStrategyPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::UIElement::XYFocusUpNavigationStrategyProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void NoFocusCandidateFoundEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::NoFocusCandidateFoundEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LosingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::LosingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void GettingFocusEventGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::RoutedEvent^ result = ::Windows::UI::Xaml::UIElement::GettingFocusEvent;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEvent", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->IsEnabledChanged::add(
            ref new ::Windows::UI::Xaml::DependencyPropertyChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyPropertyChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusDisengaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusDisengagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusDisengagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->FocusEngaged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Control^, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Control^ arg0, ::Windows::UI::Xaml::Controls::FocusEngagedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapControl(arg0);
                  wrappedArg1 = WrapFocusEngagedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LayoutUpdated::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->SizeChanged::add(
            ref new ::Windows::UI::Xaml::SizeChangedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::SizeChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "SizeChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Unloaded::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DataContextChanged::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Windows::UI::Xaml::DataContextChangedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Windows::UI::Xaml::DataContextChangedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataContextChangedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Loading::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::FrameworkElement^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::UI::Xaml::FrameworkElement^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DoubleTapped::add(
            ref new ::Windows::UI::Xaml::Input::DoubleTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "DoubleTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragEnter::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragLeave::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragOver::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Drop::add(
            ref new ::Windows::UI::Xaml::DragEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::DragEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GotFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Holding::add(
            ref new ::Windows::UI::Xaml::Input::HoldingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "HoldingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyDown::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->KeyUp::add(
            ref new ::Windows::UI::Xaml::Input::KeyEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::KeyRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "KeyRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LostFocus::add(
            ref new ::Windows::UI::Xaml::RoutedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationCompleted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationCompletedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationCompletedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationDelta::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationDeltaEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationDeltaRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationInertiaStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationInertiaStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationInertiaStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarted::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ManipulationStarting::add(
            ref new ::Windows::UI::Xaml::Input::ManipulationStartingEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ManipulationStartingRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCanceled::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerCaptureLost::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerEntered::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerExited::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerMoved::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerPressed::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerReleased::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->PointerWheelChanged::add(
            ref new ::Windows::UI::Xaml::Input::PointerEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::PointerRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "PointerRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->RightTapped::add(
            ref new ::Windows::UI::Xaml::Input::RightTappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "RightTappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Tapped::add(
            ref new ::Windows::UI::Xaml::Input::TappedEventHandler(
            [callbackObjPtr](::Platform::Object^ arg0, ::Windows::UI::Xaml::Input::TappedRoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "TappedRoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DragStarting::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DragStartingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DragStartingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DragStartingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DropCompleted::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::DropCompletedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::DropCompletedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DropCompletedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayDismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayDismissedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyDisplayRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyDisplayRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->AccessKeyInvoked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "AccessKeyInvokedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextCanceled::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::RoutedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::RoutedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "RoutedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ContextRequested::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::ContextRequestedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "ContextRequestedEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->GettingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::GettingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "GettingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->LosingFocus::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::LosingFocusEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "LosingFocusEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->NoFocusCandidateFound::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::UIElement^, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::UIElement^ arg0, ::Windows::UI::Xaml::Input::NoFocusCandidateFoundEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Input", "NoFocusCandidateFoundEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"loading", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"drop", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"holding", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"isEnabledChanged", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->IsEnabledChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusDisengaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->FocusDisengaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"focusEngaged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->FocusEngaged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"layoutUpdated", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->LayoutUpdated::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->Loaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"sizeChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->SizeChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"unloaded", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->Unloaded::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dataContextChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->DataContextChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"loading", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->Loading::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"doubleTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->DoubleTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragEnter", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->DragEnter::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragLeave", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->DragLeave::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragOver", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->DragOver::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"drop", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->Drop::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gotFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->GotFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"holding", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->Holding::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyDown", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->KeyDown::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"keyUp", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->KeyUp::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"lostFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->LostFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->ManipulationCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationDelta", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->ManipulationDelta::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationInertiaStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->ManipulationInertiaStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->ManipulationStarted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"manipulationStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->ManipulationStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->PointerCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerCaptureLost", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->PointerCaptureLost::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerEntered", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->PointerEntered::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerExited", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->PointerExited::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerMoved", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->PointerMoved::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerPressed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->PointerPressed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerReleased", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->PointerReleased::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"pointerWheelChanged", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->PointerWheelChanged::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"rightTapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->RightTapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"tapped", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->Tapped::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dragStarting", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->DragStarting::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"dropCompleted", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->DropCompleted::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayDismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->AccessKeyDisplayDismissed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyDisplayRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->AccessKeyDisplayRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"accessKeyInvoked", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->AccessKeyInvoked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextCanceled", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->ContextCanceled::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"contextRequested", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->ContextRequested::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"gettingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->GettingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"losingFocus", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->LosingFocus::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"noFocusCandidateFound", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PivotItem^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PivotItem *wrapper = PivotItem::Unwrap<PivotItem>(info.This());
          wrapper->_instance->NoFocusCandidateFound::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::PivotItem^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapPivotItem(::Windows::UI::Xaml::Controls::PivotItem^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::PivotItem^ UnwrapPivotItem(Local<Value> value);
  };

  Persistent<FunctionTemplate> PivotItem::s_constructorTemplate;

  v8::Local<v8::Value> WrapPivotItem(::Windows::UI::Xaml::Controls::PivotItem^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(PivotItem::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::PivotItem^ UnwrapPivotItem(Local<Value> value) {
     return PivotItem::Unwrap<PivotItem>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitPivotItem(Local<Object> exports) {
    PivotItem::Init(exports);
  }

  class DatePickerFlyout : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("DatePickerFlyout").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);

        Local<Function> func;
        Local<FunctionTemplate> funcTemplate;


          
            Nan::SetPrototypeMethod(localRef, "showAtAsync", ShowAtAsync);
          

          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("yearVisible").ToLocalChecked(), YearVisibleGetter, YearVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("monthVisible").ToLocalChecked(), MonthVisibleGetter, MonthVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minYear").ToLocalChecked(), MinYearGetter, MinYearSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("maxYear").ToLocalChecked(), MaxYearGetter, MaxYearSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dayVisible").ToLocalChecked(), DayVisibleGetter, DayVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("date").ToLocalChecked(), DateGetter, DateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("calendarIdentifier").ToLocalChecked(), CalendarIdentifierGetter, CalendarIdentifierSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("yearFormat").ToLocalChecked(), YearFormatGetter, YearFormatSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("monthFormat").ToLocalChecked(), MonthFormatGetter, MonthFormatSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dayFormat").ToLocalChecked(), DayFormatGetter, DayFormatSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("placement").ToLocalChecked(), PlacementGetter, PlacementSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lightDismissOverlayMode").ToLocalChecked(), LightDismissOverlayModeGetter, LightDismissOverlayModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("target").ToLocalChecked(), TargetGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("overlayInputPassThroughElement").ToLocalChecked(), OverlayInputPassThroughElementGetter, OverlayInputPassThroughElementSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("calendarIdentifierProperty").ToLocalChecked(), CalendarIdentifierPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dateProperty").ToLocalChecked(), DatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dayVisibleProperty").ToLocalChecked(), DayVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("maxYearProperty").ToLocalChecked(), MaxYearPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minYearProperty").ToLocalChecked(), MinYearPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("monthVisibleProperty").ToLocalChecked(), MonthVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("yearVisibleProperty").ToLocalChecked(), YearVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("dayFormatProperty").ToLocalChecked(), DayFormatPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("monthFormatProperty").ToLocalChecked(), MonthFormatPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("yearFormatProperty").ToLocalChecked(), YearFormatPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("titleProperty").ToLocalChecked(), TitlePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("attachedFlyoutProperty").ToLocalChecked(), AttachedFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("placementProperty").ToLocalChecked(), PlacementPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightDismissOverlayModeProperty").ToLocalChecked(), LightDismissOverlayModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("overlayInputPassThroughElementProperty").ToLocalChecked(), OverlayInputPassThroughElementPropertyGetter);


        Nan::Set(exports, Nan::New<String>("DatePickerFlyout").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      DatePickerFlyout(::Windows::UI::Xaml::Controls::DatePickerFlyout^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::DatePickerFlyout^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::DatePickerFlyout^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::DatePickerFlyout();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      DatePickerFlyout *wrapperInstance = new DatePickerFlyout(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::DatePickerFlyout^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::DatePickerFlyout^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapDatePickerFlyout(winRtInstance));
    }

    static void ShowAtAsync(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This())) {
        return;
      }

      if (info.Length() == 0 || !info[info.Length() -1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: No callback was given")));
        return;
      }

      DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());

      ::Windows::Foundation::IAsyncOperation<::Platform::Nullable<::Windows::Foundation::DateTime>>^ op;


      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::FrameworkElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::FrameworkElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          op = wrapper->_instance->ShowAtAsync(arg0);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }

      auto opTask = create_task(op);
      uv_async_t* asyncToken = NodeUtils::Async::GetAsyncToken(info[info.Length() -1].As<Function>());

      opTask.then( [asyncToken] (task<::Platform::Nullable<::Windows::Foundation::DateTime>> t) {
        try {
          auto result = t.get();
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [result](NodeUtils::InvokeCallbackDelegate invokeCallback) {


            Local<Value> error;
            Local<Value> arg1;
            {
              TryCatch tryCatch;
              arg1 = result ? static_cast<Local<Value>>(NodeRT::Utils::DateTimeToJS(result->Value)) : Undefined();
              if (tryCatch.HasCaught())
              {
                error = Nan::To<Object>(tryCatch.Exception()).ToLocalChecked();
              }
              else
              {
                error = Undefined();
              }
              if (arg1.IsEmpty()) arg1 = Undefined();
            }
            Local<Value> args[] = {error, arg1};


            invokeCallback(_countof(args), args);
          });
        } catch (Platform::Exception^ exception) {
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [exception](NodeUtils::InvokeCallbackDelegate invokeCallback) {
            Local<Value> error = NodeRT::Utils::WinRtExceptionToJsError(exception);

            Local<Value> args[] = {error};
            invokeCallback(_countof(args), args);
          });
        }
      });
    }




    static void YearVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This())) {
        return;
      }

      DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());

      try  {
        bool result = wrapper->_instance->YearVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void YearVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This())) {
        return;
      }

      DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->YearVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MonthVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This())) {
        return;
      }

      DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());

      try  {
        bool result = wrapper->_instance->MonthVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MonthVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This())) {
        return;
      }

      DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->MonthVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinYearGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This())) {
        return;
      }

      DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());

      try  {
        ::Windows::Foundation::DateTime result = wrapper->_instance->MinYear;
        info.GetReturnValue().Set(NodeRT::Utils::DateTimeToJS(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinYearSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsDate()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This())) {
        return;
      }

      DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());

      try {

        ::Windows::Foundation::DateTime winRtValue = NodeRT::Utils::DateTimeFromJSDate(value);

        wrapper->_instance->MinYear = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MaxYearGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This())) {
        return;
      }

      DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());

      try  {
        ::Windows::Foundation::DateTime result = wrapper->_instance->MaxYear;
        info.GetReturnValue().Set(NodeRT::Utils::DateTimeToJS(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MaxYearSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsDate()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This())) {
        return;
      }

      DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());

      try {

        ::Windows::Foundation::DateTime winRtValue = NodeRT::Utils::DateTimeFromJSDate(value);

        wrapper->_instance->MaxYear = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DayVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This())) {
        return;
      }

      DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());

      try  {
        bool result = wrapper->_instance->DayVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DayVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This())) {
        return;
      }

      DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->DayVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This())) {
        return;
      }

      DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());

      try  {
        ::Windows::Foundation::DateTime result = wrapper->_instance->Date;
        info.GetReturnValue().Set(NodeRT::Utils::DateTimeToJS(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsDate()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This())) {
        return;
      }

      DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());

      try {

        ::Windows::Foundation::DateTime winRtValue = NodeRT::Utils::DateTimeFromJSDate(value);

        wrapper->_instance->Date = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void CalendarIdentifierGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This())) {
        return;
      }

      DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->CalendarIdentifier;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void CalendarIdentifierSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This())) {
        return;
      }

      DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->CalendarIdentifier = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void YearFormatGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This())) {
        return;
      }

      DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->YearFormat;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void YearFormatSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This())) {
        return;
      }

      DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->YearFormat = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MonthFormatGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This())) {
        return;
      }

      DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->MonthFormat;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MonthFormatSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This())) {
        return;
      }

      DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->MonthFormat = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DayFormatGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This())) {
        return;
      }

      DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->DayFormat;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DayFormatSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This())) {
        return;
      }

      DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->DayFormat = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PlacementGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutPlacementMode result = wrapper->_instance->Placement;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PlacementSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Placement = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightDismissOverlayModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode result = wrapper->_instance->LightDismissOverlayMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LightDismissOverlayModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::LightDismissOverlayMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->LightDismissOverlayMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TargetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::FrameworkElement^ result = wrapper->_instance->Target;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OverlayInputPassThroughElementGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->OverlayInputPassThroughElement;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OverlayInputPassThroughElementSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->OverlayInputPassThroughElement = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void CalendarIdentifierPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePickerFlyout::CalendarIdentifierProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePickerFlyout::DateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DayVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePickerFlyout::DayVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MaxYearPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePickerFlyout::MaxYearProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinYearPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePickerFlyout::MinYearProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MonthVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePickerFlyout::MonthVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void YearVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePickerFlyout::YearVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void DayFormatPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePickerFlyout::DayFormatProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MonthFormatPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePickerFlyout::MonthFormatProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void YearFormatPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::DatePickerFlyout::YearFormatProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TitlePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::PickerFlyoutBase::TitleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AttachedFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::AttachedFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PlacementPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::PlacementProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightDismissOverlayModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::LightDismissOverlayModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OverlayInputPassThroughElementPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::OverlayInputPassThroughElementProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"datePicked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->DatePicked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::DatePickerFlyout^, ::Windows::UI::Xaml::Controls::DatePickedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::DatePickerFlyout^ arg0, ::Windows::UI::Xaml::Controls::DatePickedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapDatePickerFlyout(arg0);
                  wrappedArg1 = WrapDatePickedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"closed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Closed::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"opened", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Opened::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"opening", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Opening::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Closing::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^, ::Windows::UI::Xaml::Controls::Primitives::FlyoutBaseClosingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ arg0, ::Windows::UI::Xaml::Controls::Primitives::FlyoutBaseClosingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBaseClosingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"datePicked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"closed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"opened", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"opening", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"datePicked", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());
          wrapper->_instance->DatePicked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"closed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());
          wrapper->_instance->Closed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"opened", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());
          wrapper->_instance->Opened::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"opening", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());
          wrapper->_instance->Opening::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::DatePickerFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          DatePickerFlyout *wrapper = DatePickerFlyout::Unwrap<DatePickerFlyout>(info.This());
          wrapper->_instance->Closing::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::DatePickerFlyout^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapDatePickerFlyout(::Windows::UI::Xaml::Controls::DatePickerFlyout^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::DatePickerFlyout^ UnwrapDatePickerFlyout(Local<Value> value);
  };

  Persistent<FunctionTemplate> DatePickerFlyout::s_constructorTemplate;

  v8::Local<v8::Value> WrapDatePickerFlyout(::Windows::UI::Xaml::Controls::DatePickerFlyout^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(DatePickerFlyout::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::DatePickerFlyout^ UnwrapDatePickerFlyout(Local<Value> value) {
     return DatePickerFlyout::Unwrap<DatePickerFlyout>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitDatePickerFlyout(Local<Object> exports) {
    DatePickerFlyout::Init(exports);
  }

  class ListPickerFlyout : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("ListPickerFlyout").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);

        Local<Function> func;
        Local<FunctionTemplate> funcTemplate;


          
            Nan::SetPrototypeMethod(localRef, "showAtAsync", ShowAtAsync);
          

          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectionMode").ToLocalChecked(), SelectionModeGetter, SelectionModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedValuePath").ToLocalChecked(), SelectedValuePathGetter, SelectedValuePathSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedValue").ToLocalChecked(), SelectedValueGetter, SelectedValueSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedItem").ToLocalChecked(), SelectedItemGetter, SelectedItemSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedIndex").ToLocalChecked(), SelectedIndexGetter, SelectedIndexSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemsSource").ToLocalChecked(), ItemsSourceGetter, ItemsSourceSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemTemplate").ToLocalChecked(), ItemTemplateGetter, ItemTemplateSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("displayMemberPath").ToLocalChecked(), DisplayMemberPathGetter, DisplayMemberPathSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("selectedItems").ToLocalChecked(), SelectedItemsGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("placement").ToLocalChecked(), PlacementGetter, PlacementSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lightDismissOverlayMode").ToLocalChecked(), LightDismissOverlayModeGetter, LightDismissOverlayModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("target").ToLocalChecked(), TargetGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("overlayInputPassThroughElement").ToLocalChecked(), OverlayInputPassThroughElementGetter, OverlayInputPassThroughElementSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("displayMemberPathProperty").ToLocalChecked(), DisplayMemberPathPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemTemplateProperty").ToLocalChecked(), ItemTemplatePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("itemsSourceProperty").ToLocalChecked(), ItemsSourcePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedIndexProperty").ToLocalChecked(), SelectedIndexPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedItemProperty").ToLocalChecked(), SelectedItemPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedValuePathProperty").ToLocalChecked(), SelectedValuePathPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectedValueProperty").ToLocalChecked(), SelectedValuePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("selectionModeProperty").ToLocalChecked(), SelectionModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("titleProperty").ToLocalChecked(), TitlePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("attachedFlyoutProperty").ToLocalChecked(), AttachedFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("placementProperty").ToLocalChecked(), PlacementPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightDismissOverlayModeProperty").ToLocalChecked(), LightDismissOverlayModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("overlayInputPassThroughElementProperty").ToLocalChecked(), OverlayInputPassThroughElementPropertyGetter);


        Nan::Set(exports, Nan::New<String>("ListPickerFlyout").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      ListPickerFlyout(::Windows::UI::Xaml::Controls::ListPickerFlyout^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::ListPickerFlyout^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::ListPickerFlyout^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::ListPickerFlyout();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ListPickerFlyout *wrapperInstance = new ListPickerFlyout(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::ListPickerFlyout^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::ListPickerFlyout^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapListPickerFlyout(winRtInstance));
    }

    static void ShowAtAsync(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This())) {
        return;
      }

      if (info.Length() == 0 || !info[info.Length() -1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: No callback was given")));
        return;
      }

      ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());

      ::Windows::Foundation::IAsyncOperation<::Windows::Foundation::Collections::IVectorView<::Platform::Object^>^>^ op;


      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::FrameworkElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::FrameworkElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          op = wrapper->_instance->ShowAtAsync(arg0);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }

      auto opTask = create_task(op);
      uv_async_t* asyncToken = NodeUtils::Async::GetAsyncToken(info[info.Length() -1].As<Function>());

      opTask.then( [asyncToken] (task<::Windows::Foundation::Collections::IVectorView<::Platform::Object^>^> t) {
        try {
          auto result = t.get();
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [result](NodeUtils::InvokeCallbackDelegate invokeCallback) {


            Local<Value> error;
            Local<Value> arg1;
            {
              TryCatch tryCatch;
              arg1 = NodeRT::Collections::VectorViewWrapper<::Platform::Object^>::CreateVectorViewWrapper(result, 
            [](::Platform::Object^ val) -> Local<Value> {
              return CreateOpaqueWrapper(val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value);
            },
            [](Local<Value> value) -> ::Platform::Object^ {
              return dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));
            }
          );
              if (tryCatch.HasCaught())
              {
                error = Nan::To<Object>(tryCatch.Exception()).ToLocalChecked();
              }
              else
              {
                error = Undefined();
              }
              if (arg1.IsEmpty()) arg1 = Undefined();
            }
            Local<Value> args[] = {error, arg1};


            invokeCallback(_countof(args), args);
          });
        } catch (Platform::Exception^ exception) {
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [exception](NodeUtils::InvokeCallbackDelegate invokeCallback) {
            Local<Value> error = NodeRT::Utils::WinRtExceptionToJsError(exception);

            Local<Value> args[] = {error};
            invokeCallback(_countof(args), args);
          });
        }
      });
    }




    static void SelectionModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This())) {
        return;
      }

      ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::ListPickerFlyoutSelectionMode result = wrapper->_instance->SelectionMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectionModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This())) {
        return;
      }

      ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::ListPickerFlyoutSelectionMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::ListPickerFlyoutSelectionMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SelectionMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedValuePathGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This())) {
        return;
      }

      ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->SelectedValuePath;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedValuePathSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This())) {
        return;
      }

      ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->SelectedValuePath = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedValueGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This())) {
        return;
      }

      ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->SelectedValue;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedValueSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This())) {
        return;
      }

      ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectedValue = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedItemGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This())) {
        return;
      }

      ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->SelectedItem;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedItemSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This())) {
        return;
      }

      ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->SelectedItem = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedIndexGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This())) {
        return;
      }

      ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());

      try  {
        int result = wrapper->_instance->SelectedIndex;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void SelectedIndexSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This())) {
        return;
      }

      ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->SelectedIndex = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemsSourceGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This())) {
        return;
      }

      ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());

      try  {
        ::Platform::Object^ result = wrapper->_instance->ItemsSource;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemsSourceSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This())) {
        return;
      }

      ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());

      try {

        ::Platform::Object^ winRtValue = dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemsSource = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ItemTemplateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This())) {
        return;
      }

      ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());

      try  {
        ::Windows::UI::Xaml::DataTemplate^ result = wrapper->_instance->ItemTemplate;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DataTemplate", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ItemTemplateSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DataTemplate^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This())) {
        return;
      }

      ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());

      try {

        ::Windows::UI::Xaml::DataTemplate^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DataTemplate^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->ItemTemplate = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DisplayMemberPathGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This())) {
        return;
      }

      ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->DisplayMemberPath;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void DisplayMemberPathSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This())) {
        return;
      }

      ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->DisplayMemberPath = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void SelectedItemsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This())) {
        return;
      }

      ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());

      try  {
        ::Windows::Foundation::Collections::IVector<::Platform::Object^>^ result = wrapper->_instance->SelectedItems;
        info.GetReturnValue().Set(NodeRT::Collections::VectorWrapper<::Platform::Object^>::CreateVectorWrapper(result, 
            [](::Platform::Object^ val) -> Local<Value> {
              return CreateOpaqueWrapper(val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Platform::Object^>(value);
            },
            [](Local<Value> value) -> ::Platform::Object^ {
              return dynamic_cast<::Platform::Object^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PlacementGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutPlacementMode result = wrapper->_instance->Placement;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PlacementSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Placement = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightDismissOverlayModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode result = wrapper->_instance->LightDismissOverlayMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LightDismissOverlayModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::LightDismissOverlayMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->LightDismissOverlayMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TargetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::FrameworkElement^ result = wrapper->_instance->Target;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OverlayInputPassThroughElementGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->OverlayInputPassThroughElement;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OverlayInputPassThroughElementSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->OverlayInputPassThroughElement = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void DisplayMemberPathPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListPickerFlyout::DisplayMemberPathProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemTemplatePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListPickerFlyout::ItemTemplateProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ItemsSourcePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListPickerFlyout::ItemsSourceProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedIndexPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListPickerFlyout::SelectedIndexProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedItemPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListPickerFlyout::SelectedItemProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedValuePathPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListPickerFlyout::SelectedValuePathProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectedValuePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListPickerFlyout::SelectedValueProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void SelectionModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::ListPickerFlyout::SelectionModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TitlePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::PickerFlyoutBase::TitleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AttachedFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::AttachedFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PlacementPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::PlacementProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightDismissOverlayModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::LightDismissOverlayModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OverlayInputPassThroughElementPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::OverlayInputPassThroughElementProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"itemsPicked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->ItemsPicked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::ListPickerFlyout^, ::Windows::UI::Xaml::Controls::ItemsPickedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::ListPickerFlyout^ arg0, ::Windows::UI::Xaml::Controls::ItemsPickedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapListPickerFlyout(arg0);
                  wrappedArg1 = WrapItemsPickedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"closed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Closed::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"opened", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Opened::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"opening", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Opening::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Closing::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^, ::Windows::UI::Xaml::Controls::Primitives::FlyoutBaseClosingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ arg0, ::Windows::UI::Xaml::Controls::Primitives::FlyoutBaseClosingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBaseClosingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"itemsPicked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"closed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"opened", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"opening", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"itemsPicked", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());
          wrapper->_instance->ItemsPicked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"closed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());
          wrapper->_instance->Closed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"opened", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());
          wrapper->_instance->Opened::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"opening", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());
          wrapper->_instance->Opening::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::ListPickerFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          ListPickerFlyout *wrapper = ListPickerFlyout::Unwrap<ListPickerFlyout>(info.This());
          wrapper->_instance->Closing::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::ListPickerFlyout^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapListPickerFlyout(::Windows::UI::Xaml::Controls::ListPickerFlyout^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::ListPickerFlyout^ UnwrapListPickerFlyout(Local<Value> value);
  };

  Persistent<FunctionTemplate> ListPickerFlyout::s_constructorTemplate;

  v8::Local<v8::Value> WrapListPickerFlyout(::Windows::UI::Xaml::Controls::ListPickerFlyout^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ListPickerFlyout::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::ListPickerFlyout^ UnwrapListPickerFlyout(Local<Value> value) {
     return ListPickerFlyout::Unwrap<ListPickerFlyout>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitListPickerFlyout(Local<Object> exports) {
    ListPickerFlyout::Init(exports);
  }

  class PickerFlyout : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("PickerFlyout").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);

        Local<Function> func;
        Local<FunctionTemplate> funcTemplate;


          
            Nan::SetPrototypeMethod(localRef, "showAtAsync", ShowAtAsync);
          

          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("content").ToLocalChecked(), ContentGetter, ContentSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("confirmationButtonsVisible").ToLocalChecked(), ConfirmationButtonsVisibleGetter, ConfirmationButtonsVisibleSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("placement").ToLocalChecked(), PlacementGetter, PlacementSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lightDismissOverlayMode").ToLocalChecked(), LightDismissOverlayModeGetter, LightDismissOverlayModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("target").ToLocalChecked(), TargetGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("overlayInputPassThroughElement").ToLocalChecked(), OverlayInputPassThroughElementGetter, OverlayInputPassThroughElementSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("confirmationButtonsVisibleProperty").ToLocalChecked(), ConfirmationButtonsVisiblePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("contentProperty").ToLocalChecked(), ContentPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("titleProperty").ToLocalChecked(), TitlePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("attachedFlyoutProperty").ToLocalChecked(), AttachedFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("placementProperty").ToLocalChecked(), PlacementPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightDismissOverlayModeProperty").ToLocalChecked(), LightDismissOverlayModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("overlayInputPassThroughElementProperty").ToLocalChecked(), OverlayInputPassThroughElementPropertyGetter);


        Nan::Set(exports, Nan::New<String>("PickerFlyout").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      PickerFlyout(::Windows::UI::Xaml::Controls::PickerFlyout^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::PickerFlyout^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyout^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::PickerFlyout^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::PickerFlyout();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      PickerFlyout *wrapperInstance = new PickerFlyout(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyout^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::PickerFlyout^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::PickerFlyout^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapPickerFlyout(winRtInstance));
    }

    static void ShowAtAsync(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyout^>(info.This())) {
        return;
      }

      if (info.Length() == 0 || !info[info.Length() -1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: No callback was given")));
        return;
      }

      PickerFlyout *wrapper = PickerFlyout::Unwrap<PickerFlyout>(info.This());

      ::Windows::Foundation::IAsyncOperation<bool>^ op;


      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::FrameworkElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::FrameworkElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          op = wrapper->_instance->ShowAtAsync(arg0);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }

      auto opTask = create_task(op);
      uv_async_t* asyncToken = NodeUtils::Async::GetAsyncToken(info[info.Length() -1].As<Function>());

      opTask.then( [asyncToken] (task<bool> t) {
        try {
          auto result = t.get();
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [result](NodeUtils::InvokeCallbackDelegate invokeCallback) {


            Local<Value> error;
            Local<Value> arg1;
            {
              TryCatch tryCatch;
              arg1 = Nan::New<Boolean>(result);
              if (tryCatch.HasCaught())
              {
                error = Nan::To<Object>(tryCatch.Exception()).ToLocalChecked();
              }
              else
              {
                error = Undefined();
              }
              if (arg1.IsEmpty()) arg1 = Undefined();
            }
            Local<Value> args[] = {error, arg1};


            invokeCallback(_countof(args), args);
          });
        } catch (Platform::Exception^ exception) {
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [exception](NodeUtils::InvokeCallbackDelegate invokeCallback) {
            Local<Value> error = NodeRT::Utils::WinRtExceptionToJsError(exception);

            Local<Value> args[] = {error};
            invokeCallback(_countof(args), args);
          });
        }
      });
    }




    static void ContentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyout^>(info.This())) {
        return;
      }

      PickerFlyout *wrapper = PickerFlyout::Unwrap<PickerFlyout>(info.This());

      try  {
        ::Windows::UI::Xaml::UIElement^ result = wrapper->_instance->Content;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "UIElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ContentSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::UIElement^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyout^>(info.This())) {
        return;
      }

      PickerFlyout *wrapper = PickerFlyout::Unwrap<PickerFlyout>(info.This());

      try {

        ::Windows::UI::Xaml::UIElement^ winRtValue = dynamic_cast<::Windows::UI::Xaml::UIElement^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->Content = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ConfirmationButtonsVisibleGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyout^>(info.This())) {
        return;
      }

      PickerFlyout *wrapper = PickerFlyout::Unwrap<PickerFlyout>(info.This());

      try  {
        bool result = wrapper->_instance->ConfirmationButtonsVisible;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ConfirmationButtonsVisibleSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyout^>(info.This())) {
        return;
      }

      PickerFlyout *wrapper = PickerFlyout::Unwrap<PickerFlyout>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->ConfirmationButtonsVisible = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PlacementGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutPlacementMode result = wrapper->_instance->Placement;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PlacementSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Placement = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightDismissOverlayModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode result = wrapper->_instance->LightDismissOverlayMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LightDismissOverlayModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::LightDismissOverlayMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->LightDismissOverlayMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TargetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::FrameworkElement^ result = wrapper->_instance->Target;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OverlayInputPassThroughElementGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->OverlayInputPassThroughElement;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OverlayInputPassThroughElementSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->OverlayInputPassThroughElement = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ConfirmationButtonsVisiblePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::PickerFlyout::ConfirmationButtonsVisibleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ContentPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::PickerFlyout::ContentProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TitlePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::PickerFlyoutBase::TitleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AttachedFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::AttachedFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PlacementPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::PlacementProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightDismissOverlayModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::LightDismissOverlayModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OverlayInputPassThroughElementPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::OverlayInputPassThroughElementProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"confirmed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyout *wrapper = PickerFlyout::Unwrap<PickerFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Confirmed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::PickerFlyout^, ::Windows::UI::Xaml::Controls::PickerConfirmedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::PickerFlyout^ arg0, ::Windows::UI::Xaml::Controls::PickerConfirmedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapPickerFlyout(arg0);
                  wrappedArg1 = WrapPickerConfirmedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"closed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyout *wrapper = PickerFlyout::Unwrap<PickerFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Closed::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"opened", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyout *wrapper = PickerFlyout::Unwrap<PickerFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Opened::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"opening", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyout *wrapper = PickerFlyout::Unwrap<PickerFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Opening::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        PickerFlyout *wrapper = PickerFlyout::Unwrap<PickerFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Closing::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^, ::Windows::UI::Xaml::Controls::Primitives::FlyoutBaseClosingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ arg0, ::Windows::UI::Xaml::Controls::Primitives::FlyoutBaseClosingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBaseClosingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"confirmed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"closed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"opened", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"opening", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"confirmed", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyout *wrapper = PickerFlyout::Unwrap<PickerFlyout>(info.This());
          wrapper->_instance->Confirmed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"closed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyout *wrapper = PickerFlyout::Unwrap<PickerFlyout>(info.This());
          wrapper->_instance->Closed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"opened", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyout *wrapper = PickerFlyout::Unwrap<PickerFlyout>(info.This());
          wrapper->_instance->Opened::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"opening", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyout *wrapper = PickerFlyout::Unwrap<PickerFlyout>(info.This());
          wrapper->_instance->Opening::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::PickerFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          PickerFlyout *wrapper = PickerFlyout::Unwrap<PickerFlyout>(info.This());
          wrapper->_instance->Closing::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::PickerFlyout^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapPickerFlyout(::Windows::UI::Xaml::Controls::PickerFlyout^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::PickerFlyout^ UnwrapPickerFlyout(Local<Value> value);
  };

  Persistent<FunctionTemplate> PickerFlyout::s_constructorTemplate;

  v8::Local<v8::Value> WrapPickerFlyout(::Windows::UI::Xaml::Controls::PickerFlyout^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(PickerFlyout::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::PickerFlyout^ UnwrapPickerFlyout(Local<Value> value) {
     return PickerFlyout::Unwrap<PickerFlyout>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitPickerFlyout(Local<Object> exports) {
    PickerFlyout::Init(exports);
  }

  class TimePickerFlyout : public WrapperBase {
    public:
      
      static void Init(const Local<Object> exports) {
        HandleScope scope;

        Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
        s_constructorTemplate.Reset(localRef);
        localRef->SetClassName(Nan::New<String>("TimePickerFlyout").ToLocalChecked());
        localRef->InstanceTemplate()->SetInternalFieldCount(1);

        Local<Function> func;
        Local<FunctionTemplate> funcTemplate;


          
            Nan::SetPrototypeMethod(localRef, "showAtAsync", ShowAtAsync);
          

          
          Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
          Nan::SetPrototypeMethod(localRef,"on", AddListener);
          Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
          Nan::SetPrototypeMethod(localRef, "off", RemoveListener);

          
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("time").ToLocalChecked(), TimeGetter, TimeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("minuteIncrement").ToLocalChecked(), MinuteIncrementGetter, MinuteIncrementSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("clockIdentifier").ToLocalChecked(), ClockIdentifierGetter, ClockIdentifierSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("placement").ToLocalChecked(), PlacementGetter, PlacementSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("lightDismissOverlayMode").ToLocalChecked(), LightDismissOverlayModeGetter, LightDismissOverlayModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("elementSoundMode").ToLocalChecked(), ElementSoundModeGetter, ElementSoundModeSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusWhenDisabled").ToLocalChecked(), AllowFocusWhenDisabledGetter, AllowFocusWhenDisabledSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("allowFocusOnInteraction").ToLocalChecked(), AllowFocusOnInteractionGetter, AllowFocusOnInteractionSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("target").ToLocalChecked(), TargetGetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("overlayInputPassThroughElement").ToLocalChecked(), OverlayInputPassThroughElementGetter, OverlayInputPassThroughElementSetter);
            Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("dispatcher").ToLocalChecked(), DispatcherGetter);

        Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
        Nan::SetMethod(constructor, "castFrom", CastFrom);

        Nan::SetAccessor(constructor, Nan::New<String>("clockIdentifierProperty").ToLocalChecked(), ClockIdentifierPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("minuteIncrementProperty").ToLocalChecked(), MinuteIncrementPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("timeProperty").ToLocalChecked(), TimePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("titleProperty").ToLocalChecked(), TitlePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("attachedFlyoutProperty").ToLocalChecked(), AttachedFlyoutPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("placementProperty").ToLocalChecked(), PlacementPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusOnInteractionProperty").ToLocalChecked(), AllowFocusOnInteractionPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("allowFocusWhenDisabledProperty").ToLocalChecked(), AllowFocusWhenDisabledPropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("elementSoundModeProperty").ToLocalChecked(), ElementSoundModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("lightDismissOverlayModeProperty").ToLocalChecked(), LightDismissOverlayModePropertyGetter);
        Nan::SetAccessor(constructor, Nan::New<String>("overlayInputPassThroughElementProperty").ToLocalChecked(), OverlayInputPassThroughElementPropertyGetter);


        Nan::Set(exports, Nan::New<String>("TimePickerFlyout").ToLocalChecked(), constructor);
      }

      virtual ::Platform::Object^ GetObjectInstance() const override {
        return _instance;
      }

    private:

      TimePickerFlyout(::Windows::UI::Xaml::Controls::TimePickerFlyout^ instance) {
        _instance = instance;
      }

      
    static void New(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This())) {
        if (info.Length() > 0) {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++) {
            argsPtr[i] = info[i];
          }

          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        } else {
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);

          if (res.IsEmpty()) {
            return;
          }

          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }

      ::Windows::UI::Xaml::Controls::TimePickerFlyout^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyout^>(info[0])) {
        try {
          winRtInstance = (::Windows::UI::Xaml::Controls::TimePickerFlyout^) NodeRT::Utils::GetObjectInstance(info[0]);
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else if (info.Length() == 0)
      {
        try {
          winRtInstance = ref new ::Windows::UI::Xaml::Controls::TimePickerFlyout();
        } catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
        return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      TimePickerFlyout *wrapperInstance = new TimePickerFlyout(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


      
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;
      if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyout^>(info[0])) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
        return;
      }

      ::Windows::UI::Xaml::Controls::TimePickerFlyout^ winRtInstance;
      try {
        winRtInstance = (::Windows::UI::Xaml::Controls::TimePickerFlyout^) NodeRT::Utils::GetObjectInstance(info[0]);
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }

      info.GetReturnValue().Set(WrapTimePickerFlyout(winRtInstance));
    }

    static void ShowAtAsync(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyout^>(info.This())) {
        return;
      }

      if (info.Length() == 0 || !info[info.Length() -1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: No callback was given")));
        return;
      }

      TimePickerFlyout *wrapper = TimePickerFlyout::Unwrap<TimePickerFlyout>(info.This());

      ::Windows::Foundation::IAsyncOperation<::Platform::Nullable<::Windows::Foundation::TimeSpan>>^ op;


      if (info.Length() == 2
        && NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::FrameworkElement^>(info[0]))
      {
        try
        {
          ::Windows::UI::Xaml::FrameworkElement^ arg0 = dynamic_cast<::Windows::UI::Xaml::FrameworkElement^>(NodeRT::Utils::GetObjectInstance(info[0]));
          
          op = wrapper->_instance->ShowAtAsync(arg0);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
 else {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Bad arguments: no suitable overload found")));
        return;
      }

      auto opTask = create_task(op);
      uv_async_t* asyncToken = NodeUtils::Async::GetAsyncToken(info[info.Length() -1].As<Function>());

      opTask.then( [asyncToken] (task<::Platform::Nullable<::Windows::Foundation::TimeSpan>> t) {
        try {
          auto result = t.get();
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [result](NodeUtils::InvokeCallbackDelegate invokeCallback) {


            Local<Value> error;
            Local<Value> arg1;
            {
              TryCatch tryCatch;
              arg1 = result ? static_cast<Local<Value>>(Nan::New<Number>(result->Value.Duration/10000.0)) : Undefined();
              if (tryCatch.HasCaught())
              {
                error = Nan::To<Object>(tryCatch.Exception()).ToLocalChecked();
              }
              else
              {
                error = Undefined();
              }
              if (arg1.IsEmpty()) arg1 = Undefined();
            }
            Local<Value> args[] = {error, arg1};


            invokeCallback(_countof(args), args);
          });
        } catch (Platform::Exception^ exception) {
          NodeUtils::Async::RunCallbackOnMain(asyncToken, [exception](NodeUtils::InvokeCallbackDelegate invokeCallback) {
            Local<Value> error = NodeRT::Utils::WinRtExceptionToJsError(exception);

            Local<Value> args[] = {error};
            invokeCallback(_countof(args), args);
          });
        }
      });
    }




    static void TimeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyout^>(info.This())) {
        return;
      }

      TimePickerFlyout *wrapper = TimePickerFlyout::Unwrap<TimePickerFlyout>(info.This());

      try  {
        ::Windows::Foundation::TimeSpan result = wrapper->_instance->Time;
        info.GetReturnValue().Set(Nan::New<Number>(result.Duration/10000.0));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void TimeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsNumber()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyout^>(info.This())) {
        return;
      }

      TimePickerFlyout *wrapper = TimePickerFlyout::Unwrap<TimePickerFlyout>(info.This());

      try {

        ::Windows::Foundation::TimeSpan winRtValue = NodeRT::Utils::TimeSpanFromMilli(Nan::To<int64_t>(value).FromMaybe(0));

        wrapper->_instance->Time = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void MinuteIncrementGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyout^>(info.This())) {
        return;
      }

      TimePickerFlyout *wrapper = TimePickerFlyout::Unwrap<TimePickerFlyout>(info.This());

      try  {
        int result = wrapper->_instance->MinuteIncrement;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void MinuteIncrementSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyout^>(info.This())) {
        return;
      }

      TimePickerFlyout *wrapper = TimePickerFlyout::Unwrap<TimePickerFlyout>(info.This());

      try {

        int winRtValue = static_cast<int>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->MinuteIncrement = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ClockIdentifierGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyout^>(info.This())) {
        return;
      }

      TimePickerFlyout *wrapper = TimePickerFlyout::Unwrap<TimePickerFlyout>(info.This());

      try  {
        Platform::String^ result = wrapper->_instance->ClockIdentifier;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ClockIdentifierSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsString()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyout^>(info.This())) {
        return;
      }

      TimePickerFlyout *wrapper = TimePickerFlyout::Unwrap<TimePickerFlyout>(info.This());

      try {

        Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

        wrapper->_instance->ClockIdentifier = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void PlacementGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::Primitives::FlyoutPlacementMode result = wrapper->_instance->Placement;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void PlacementSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::Primitives::FlyoutPlacementMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::Primitives::FlyoutPlacementMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->Placement = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void LightDismissOverlayModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode result = wrapper->_instance->LightDismissOverlayMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void LightDismissOverlayModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::Controls::LightDismissOverlayMode winRtValue = static_cast<::Windows::UI::Xaml::Controls::LightDismissOverlayMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->LightDismissOverlayMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void ElementSoundModeGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::ElementSoundMode result = wrapper->_instance->ElementSoundMode;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void ElementSoundModeSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsInt32()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::ElementSoundMode winRtValue = static_cast<::Windows::UI::Xaml::ElementSoundMode>(Nan::To<int32_t>(value).FromMaybe(0));

        wrapper->_instance->ElementSoundMode = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusWhenDisabledGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusWhenDisabled;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusWhenDisabledSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusWhenDisabled = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void AllowFocusOnInteractionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        bool result = wrapper->_instance->AllowFocusOnInteraction;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void AllowFocusOnInteractionSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!value->IsBoolean()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        bool winRtValue = Nan::To<bool>(value).FromMaybe(false);

        wrapper->_instance->AllowFocusOnInteraction = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void TargetGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::FrameworkElement^ result = wrapper->_instance->Target;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "FrameworkElement", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OverlayInputPassThroughElementGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try  {
        ::Windows::UI::Xaml::DependencyObject^ result = wrapper->_instance->OverlayInputPassThroughElement;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyObject", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      
    static void OverlayInputPassThroughElementSetter(Local<String> property, Local<Value> value, const Nan::PropertyCallbackInfo<void> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(value)) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Value to set is of unexpected type")));
        return;
      }

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^>(info.This())) {
        return;
      }

      FlyoutBase *wrapper = FlyoutBase::Unwrap<FlyoutBase>(info.This());

      try {

        ::Windows::UI::Xaml::DependencyObject^ winRtValue = dynamic_cast<::Windows::UI::Xaml::DependencyObject^>(NodeRT::Utils::GetObjectInstance(value));

        wrapper->_instance->OverlayInputPassThroughElement = winRtValue;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }
    }
      
    static void DispatcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::DependencyObject^>(info.This())) {
        return;
      }

      DependencyObject *wrapper = DependencyObject::Unwrap<DependencyObject>(info.This());

      try  {
        ::Windows::UI::Core::CoreDispatcher^ result = wrapper->_instance->Dispatcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Core", "CoreDispatcher", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      


    static void ClockIdentifierPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TimePickerFlyout::ClockIdentifierProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void MinuteIncrementPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TimePickerFlyout::MinuteIncrementProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TimePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::TimePickerFlyout::TimeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void TitlePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::PickerFlyoutBase::TitleProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AttachedFlyoutPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::AttachedFlyoutProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void PlacementPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::PlacementProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusOnInteractionPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::AllowFocusOnInteractionProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AllowFocusWhenDisabledPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::AllowFocusWhenDisabledProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void ElementSoundModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::ElementSoundModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void LightDismissOverlayModePropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::LightDismissOverlayModeProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void OverlayInputPassThroughElementPropertyGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info) {
      HandleScope scope;

      try
      {
        ::Windows::UI::Xaml::DependencyProperty^ result = ::Windows::UI::Xaml::Controls::Primitives::FlyoutBase::OverlayInputPassThroughElementProperty;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml", "DependencyProperty", result));
        return;
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
      

    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      Local<Function> callback = info[1].As<Function>();

      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"timePicked", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyout *wrapper = TimePickerFlyout::Unwrap<TimePickerFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->TimePicked::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::TimePickerFlyout^, ::Windows::UI::Xaml::Controls::TimePickedEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::TimePickerFlyout^ arg0, ::Windows::UI::Xaml::Controls::TimePickedEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = WrapTimePickerFlyout(arg0);
                  wrappedArg1 = WrapTimePickedEventArgs(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"closed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyout *wrapper = TimePickerFlyout::Unwrap<TimePickerFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Closed::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"opened", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyout *wrapper = TimePickerFlyout::Unwrap<TimePickerFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Opened::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"opening", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyout *wrapper = TimePickerFlyout::Unwrap<TimePickerFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Opening::add(
            ref new ::Windows::Foundation::EventHandler<::Platform::Object^>(
            [callbackObjPtr](::Platform::Object^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = CreateOpaqueWrapper(arg0);
                  wrappedArg1 = CreateOpaqueWrapper(arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else if (NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyout^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
      return;
        }
        TimePickerFlyout *wrapper = TimePickerFlyout::Unwrap<TimePickerFlyout>(info.This());
      
        try {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr,
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Closing::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^, ::Windows::UI::Xaml::Controls::Primitives::FlyoutBaseClosingEventArgs^>(
            [callbackObjPtr](::Windows::UI::Xaml::Controls::Primitives::FlyoutBase^ arg0, ::Windows::UI::Xaml::Controls::Primitives::FlyoutBaseClosingEventArgs^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
                HandleScope scope;


                Local<Value> wrappedArg0;
                Local<Value> wrappedArg1;

                {
                  TryCatch tryCatch;


                  wrappedArg0 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBase", arg0);
                  wrappedArg1 = NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.Xaml.Controls.Primitives", "FlyoutBaseClosingEventArgs", arg1);


                  if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                  if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();
                }

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception) {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
 else  {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false)) {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      } else {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info) {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction()) {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
      auto str = *eventName;

      if ((!NodeRT::Utils::CaseInsenstiveEquals(L"timePicked", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"closed", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"opened", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"opening", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))) {
        Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());

      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false)) {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false)) {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());

      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;

      try  {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"timePicked", str)) {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyout *wrapper = TimePickerFlyout::Unwrap<TimePickerFlyout>(info.This());
          wrapper->_instance->TimePicked::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"closed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyout *wrapper = TimePickerFlyout::Unwrap<TimePickerFlyout>(info.This());
          wrapper->_instance->Closed::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"opened", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyout *wrapper = TimePickerFlyout::Unwrap<TimePickerFlyout>(info.This());
          wrapper->_instance->Opened::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"opening", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyout *wrapper = TimePickerFlyout::Unwrap<TimePickerFlyout>(info.This());
          wrapper->_instance->Opening::remove(registrationToken);
        }
        else if (NodeRT::Utils::CaseInsenstiveEquals(L"closing", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::UI::Xaml::Controls::TimePickerFlyout^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          TimePickerFlyout *wrapper = TimePickerFlyout::Unwrap<TimePickerFlyout>(info.This());
          wrapper->_instance->Closing::remove(registrationToken);
        }
      } catch (Platform::Exception ^exception) {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
    private:
      ::Windows::UI::Xaml::Controls::TimePickerFlyout^ _instance;
      static Persistent<FunctionTemplate> s_constructorTemplate;

      friend v8::Local<v8::Value> WrapTimePickerFlyout(::Windows::UI::Xaml::Controls::TimePickerFlyout^ wintRtInstance);
      friend ::Windows::UI::Xaml::Controls::TimePickerFlyout^ UnwrapTimePickerFlyout(Local<Value> value);
  };

  Persistent<FunctionTemplate> TimePickerFlyout::s_constructorTemplate;

  v8::Local<v8::Value> WrapTimePickerFlyout(::Windows::UI::Xaml::Controls::TimePickerFlyout^ winRtInstance) {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr) {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(TimePickerFlyout::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::UI::Xaml::Controls::TimePickerFlyout^ UnwrapTimePickerFlyout(Local<Value> value) {
     return TimePickerFlyout::Unwrap<TimePickerFlyout>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitTimePickerFlyout(Local<Object> exports) {
    TimePickerFlyout::Init(exports);
  }


} } } } } 

NAN_MODULE_INIT(init) {
  // We ignore failures for now since it probably means that
  // the initialization already happened for STA, and that's cool

  CoInitializeEx(nullptr, COINIT_MULTITHREADED);

  /*
  if (FAILED(CoInitializeEx(nullptr, COINIT_MULTITHREADED))) {
    Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"error in CoInitializeEx()")));
    return;
  }
  */

      NodeRT::Windows::UI::Xaml::Controls::InitCandidateWindowAlignmentEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitClickModeEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitComboBoxSelectionChangedTriggerEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitIncrementalLoadingTriggerEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitItemsUpdatingScrollModeEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitListViewReorderModeEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitListViewSelectionModeEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitOrientationEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitPanelScrollingDirectionEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitPasswordRevealModeEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitRichEditClipboardFormatEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitScrollBarVisibilityEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitScrollIntoViewAlignmentEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitScrollModeEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitSelectionModeEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitSnapPointsTypeEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitStretchDirectionEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitVirtualizationModeEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitZoomModeEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitAppBarClosedDisplayModeEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitAutoSuggestionBoxTextChangeReasonEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitCalendarViewDisplayModeEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitCalendarViewSelectionModeEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitCommandBarDefaultLabelPositionEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitCommandBarDynamicOverflowActionEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitCommandBarLabelPositionEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitCommandBarOverflowButtonVisibilityEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitContentDialogButtonEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitContentDialogResultEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitSplitViewDisplayModeEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitSplitViewPanePlacementEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitSymbolEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitWebViewExecutionModeEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitWebViewPermissionStateEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitWebViewPermissionTypeEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitLightDismissOverlayModeEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitRequiresPointerEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarButtonFlyoutPlacementEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarFlyoutItemKindEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarInitialControlsEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarMenuKindEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarStencilKindEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarToggleEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarToolEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitListPickerFlyoutSelectionModeEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitPivotHeaderFocusVisualPlacementEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitPivotSlideInAnimationGroupEnum(target);
      NodeRT::Windows::UI::Xaml::Controls::InitBackClickEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitDragItemsStartingEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitNotifyEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitSemanticZoomViewChangedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitTextControlPasteEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitContainerContentChangingEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitIInsertionPanel(target);
      NodeRT::Windows::UI::Xaml::Controls::InitIItemContainerMapping(target);
      NodeRT::Windows::UI::Xaml::Controls::InitINavigate(target);
      NodeRT::Windows::UI::Xaml::Controls::InitISemanticZoomInformation(target);
      NodeRT::Windows::UI::Xaml::Controls::InitSemanticZoomLocation(target);
      NodeRT::Windows::UI::Xaml::Controls::InitCandidateWindowBoundsChangedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitChoosingGroupHeaderContainerEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitChoosingItemContainerEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitColumnDefinitionCollection(target);
      NodeRT::Windows::UI::Xaml::Controls::InitDataTemplateSelector(target);
      NodeRT::Windows::UI::Xaml::Controls::InitDragItemsCompletedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitStyleSelector(target);
      NodeRT::Windows::UI::Xaml::Controls::InitGroupStyle(target);
      NodeRT::Windows::UI::Xaml::Controls::InitGroupStyleSelector(target);
      NodeRT::Windows::UI::Xaml::Controls::InitItemCollection(target);
      NodeRT::Windows::UI::Xaml::Controls::InitItemContainerGenerator(target);
      NodeRT::Windows::UI::Xaml::Controls::InitMediaTransportControlsHelper(target);
      NodeRT::Windows::UI::Xaml::Controls::InitRowDefinitionCollection(target);
      NodeRT::Windows::UI::Xaml::Controls::InitTextBoxTextChangingEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitTextCompositionChangedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitTextCompositionEndedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitTextCompositionStartedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitToolTipService(target);
      NodeRT::Windows::UI::Xaml::Controls::InitUIElementCollection(target);
      NodeRT::Windows::UI::Xaml::Controls::InitCalendarViewDayItemChangingEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitHubSectionHeaderClickEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitSectionsInViewChangedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitWebViewNavigationFailedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitICommandBarElement(target);
      NodeRT::Windows::UI::Xaml::Controls::InitICommandBarElement2(target);
      NodeRT::Windows::UI::Xaml::Controls::InitCalendarDatePickerDateChangedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitCalendarViewSelectedDatesChangedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitContentDialogButtonClickDeferral(target);
      NodeRT::Windows::UI::Xaml::Controls::InitContentDialogButtonClickEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitContentDialogClosedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitContentDialogClosingDeferral(target);
      NodeRT::Windows::UI::Xaml::Controls::InitContentDialogClosingEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitContentDialogOpenedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitDatePickerValueChangedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitDynamicOverflowItemsChangingEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitHubSectionCollection(target);
      NodeRT::Windows::UI::Xaml::Controls::InitListViewPersistenceHelper(target);
      NodeRT::Windows::UI::Xaml::Controls::InitRichEditBoxTextChangingEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitScrollViewerView(target);
      NodeRT::Windows::UI::Xaml::Controls::InitScrollViewerViewChangedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitScrollViewerViewChangingEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitSearchBoxQueryChangedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitSearchBoxQuerySubmittedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitSearchBoxResultSuggestionChosenEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitSearchBoxSuggestionsRequestedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitSplitViewPaneClosingEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitTimePickerValueChangedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitWebViewContentLoadingEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitWebViewDeferredPermissionRequest(target);
      NodeRT::Windows::UI::Xaml::Controls::InitWebViewDOMContentLoadedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitWebViewLongRunningScriptDetectedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitWebViewNavigationCompletedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitWebViewNavigationStartingEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitWebViewNewWindowRequestedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitWebViewPermissionRequest(target);
      NodeRT::Windows::UI::Xaml::Controls::InitWebViewPermissionRequestedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitWebViewSettings(target);
      NodeRT::Windows::UI::Xaml::Controls::InitWebViewUnsupportedUriSchemeIdentifiedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitWebViewUnviewableContentIdentifiedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitColumnDefinition(target);
      NodeRT::Windows::UI::Xaml::Controls::InitRowDefinition(target);
      NodeRT::Windows::UI::Xaml::Controls::InitAutoSuggestBoxQuerySubmittedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitAutoSuggestBoxSuggestionChosenEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitAutoSuggestBoxTextChangedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitCleanUpVirtualizedItemEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitContextMenuEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitItemClickEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitSelectionChangedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitTextChangedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitItemsPanelTemplate(target);
      NodeRT::Windows::UI::Xaml::Controls::InitPanel(target);
      NodeRT::Windows::UI::Xaml::Controls::InitBorder(target);
      NodeRT::Windows::UI::Xaml::Controls::InitCaptureElement(target);
      NodeRT::Windows::UI::Xaml::Controls::InitContentPresenter(target);
      NodeRT::Windows::UI::Xaml::Controls::InitImage(target);
      NodeRT::Windows::UI::Xaml::Controls::InitItemsPresenter(target);
      NodeRT::Windows::UI::Xaml::Controls::InitRichTextBlockOverflow(target);
      NodeRT::Windows::UI::Xaml::Controls::InitRichTextBlock(target);
      NodeRT::Windows::UI::Xaml::Controls::InitTextBlock(target);
      NodeRT::Windows::UI::Xaml::Controls::InitViewbox(target);
      NodeRT::Windows::UI::Xaml::Controls::InitCanvas(target);
      NodeRT::Windows::UI::Xaml::Controls::InitGrid(target);
      NodeRT::Windows::UI::Xaml::Controls::InitRelativePanel(target);
      NodeRT::Windows::UI::Xaml::Controls::InitStackPanel(target);
      NodeRT::Windows::UI::Xaml::Controls::InitVariableSizedWrapGrid(target);
      NodeRT::Windows::UI::Xaml::Controls::InitVirtualizingPanel(target);
      NodeRT::Windows::UI::Xaml::Controls::InitVirtualizingStackPanel(target);
      NodeRT::Windows::UI::Xaml::Controls::InitIconElement(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkCanvas(target);
      NodeRT::Windows::UI::Xaml::Controls::InitMediaElement(target);
      NodeRT::Windows::UI::Xaml::Controls::InitMediaPlayerPresenter(target);
      NodeRT::Windows::UI::Xaml::Controls::InitWebView(target);
      NodeRT::Windows::UI::Xaml::Controls::InitBitmapIcon(target);
      NodeRT::Windows::UI::Xaml::Controls::InitFontIcon(target);
      NodeRT::Windows::UI::Xaml::Controls::InitItemsStackPanel(target);
      NodeRT::Windows::UI::Xaml::Controls::InitItemsWrapGrid(target);
      NodeRT::Windows::UI::Xaml::Controls::InitPathIcon(target);
      NodeRT::Windows::UI::Xaml::Controls::InitScrollContentPresenter(target);
      NodeRT::Windows::UI::Xaml::Controls::InitSymbolIcon(target);
      NodeRT::Windows::UI::Xaml::Controls::InitSwapChainBackgroundPanel(target);
      NodeRT::Windows::UI::Xaml::Controls::InitSwapChainPanel(target);
      NodeRT::Windows::UI::Xaml::Controls::InitWrapGrid(target);
      NodeRT::Windows::UI::Xaml::Controls::InitFocusDisengagedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitFocusEngagedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitControlTemplate(target);
      NodeRT::Windows::UI::Xaml::Controls::InitControl(target);
      NodeRT::Windows::UI::Xaml::Controls::InitSemanticZoom(target);
      NodeRT::Windows::UI::Xaml::Controls::InitContentControl(target);
      NodeRT::Windows::UI::Xaml::Controls::InitListViewBaseHeaderItem(target);
      NodeRT::Windows::UI::Xaml::Controls::InitItemsControl(target);
      NodeRT::Windows::UI::Xaml::Controls::InitMediaTransportControls(target);
      NodeRT::Windows::UI::Xaml::Controls::InitPasswordBox(target);
      NodeRT::Windows::UI::Xaml::Controls::InitProgressRing(target);
      NodeRT::Windows::UI::Xaml::Controls::InitTextBox(target);
      NodeRT::Windows::UI::Xaml::Controls::InitToggleSwitch(target);
      NodeRT::Windows::UI::Xaml::Controls::InitUserControl(target);
      NodeRT::Windows::UI::Xaml::Controls::InitGroupItem(target);
      NodeRT::Windows::UI::Xaml::Controls::InitSettingsFlyout(target);
      NodeRT::Windows::UI::Xaml::Controls::InitToolTip(target);
      NodeRT::Windows::UI::Xaml::Controls::InitComboBoxItem(target);
      NodeRT::Windows::UI::Xaml::Controls::InitFlipViewItem(target);
      NodeRT::Windows::UI::Xaml::Controls::InitListBoxItem(target);
      NodeRT::Windows::UI::Xaml::Controls::InitProgressBar(target);
      NodeRT::Windows::UI::Xaml::Controls::InitSlider(target);
      NodeRT::Windows::UI::Xaml::Controls::InitButton(target);
      NodeRT::Windows::UI::Xaml::Controls::InitHyperlinkButton(target);
      NodeRT::Windows::UI::Xaml::Controls::InitListViewBase(target);
      NodeRT::Windows::UI::Xaml::Controls::InitComboBox(target);
      NodeRT::Windows::UI::Xaml::Controls::InitFlipView(target);
      NodeRT::Windows::UI::Xaml::Controls::InitListBox(target);
      NodeRT::Windows::UI::Xaml::Controls::InitCheckBox(target);
      NodeRT::Windows::UI::Xaml::Controls::InitRadioButton(target);
      NodeRT::Windows::UI::Xaml::Controls::InitCalendarView(target);
      NodeRT::Windows::UI::Xaml::Controls::InitCalendarViewDayItem(target);
      NodeRT::Windows::UI::Xaml::Controls::InitHubSection(target);
      NodeRT::Windows::UI::Xaml::Controls::InitMenuFlyoutItemBase(target);
      NodeRT::Windows::UI::Xaml::Controls::InitAppBarSeparator(target);
      NodeRT::Windows::UI::Xaml::Controls::InitCalendarDatePicker(target);
      NodeRT::Windows::UI::Xaml::Controls::InitDatePicker(target);
      NodeRT::Windows::UI::Xaml::Controls::InitHub(target);
      NodeRT::Windows::UI::Xaml::Controls::InitMediaPlayerElement(target);
      NodeRT::Windows::UI::Xaml::Controls::InitRichEditBox(target);
      NodeRT::Windows::UI::Xaml::Controls::InitSearchBox(target);
      NodeRT::Windows::UI::Xaml::Controls::InitSplitView(target);
      NodeRT::Windows::UI::Xaml::Controls::InitTimePicker(target);
      NodeRT::Windows::UI::Xaml::Controls::InitAppBar(target);
      NodeRT::Windows::UI::Xaml::Controls::InitAutoSuggestBox(target);
      NodeRT::Windows::UI::Xaml::Controls::InitCommandBarOverflowPresenter(target);
      NodeRT::Windows::UI::Xaml::Controls::InitContentDialog(target);
      NodeRT::Windows::UI::Xaml::Controls::InitFlyoutPresenter(target);
      NodeRT::Windows::UI::Xaml::Controls::InitFrame(target);
      NodeRT::Windows::UI::Xaml::Controls::InitMenuFlyoutItem(target);
      NodeRT::Windows::UI::Xaml::Controls::InitMenuFlyoutPresenter(target);
      NodeRT::Windows::UI::Xaml::Controls::InitMenuFlyoutSeparator(target);
      NodeRT::Windows::UI::Xaml::Controls::InitMenuFlyoutSubItem(target);
      NodeRT::Windows::UI::Xaml::Controls::InitPage(target);
      NodeRT::Windows::UI::Xaml::Controls::InitScrollViewer(target);
      NodeRT::Windows::UI::Xaml::Controls::InitCommandBar(target);
      NodeRT::Windows::UI::Xaml::Controls::InitGridViewHeaderItem(target);
      NodeRT::Windows::UI::Xaml::Controls::InitGridViewItem(target);
      NodeRT::Windows::UI::Xaml::Controls::InitListViewHeaderItem(target);
      NodeRT::Windows::UI::Xaml::Controls::InitListViewItem(target);
      NodeRT::Windows::UI::Xaml::Controls::InitToggleMenuFlyoutItem(target);
      NodeRT::Windows::UI::Xaml::Controls::InitAppBarButton(target);
      NodeRT::Windows::UI::Xaml::Controls::InitAppBarToggleButton(target);
      NodeRT::Windows::UI::Xaml::Controls::InitGridView(target);
      NodeRT::Windows::UI::Xaml::Controls::InitListView(target);
      NodeRT::Windows::UI::Xaml::Controls::InitFlyout(target);
      NodeRT::Windows::UI::Xaml::Controls::InitMenuFlyout(target);
      NodeRT::Windows::UI::Xaml::Controls::InitWebViewBrush(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarIsStencilButtonCheckedChangedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarCustomPen(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbar(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarPenConfigurationControl(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarFlyoutItem(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarMenuButton(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarStencilButton(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarToggleButton(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarToolButton(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarCustomToggleButton(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarCustomToolButton(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarEraserButton(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarPenButton(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarRulerButton(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarBallpointPenButton(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarCustomPenButton(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarHighlighterButton(target);
      NodeRT::Windows::UI::Xaml::Controls::InitInkToolbarPencilButton(target);
      NodeRT::Windows::UI::Xaml::Controls::InitPivotItemEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitDatePickedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitDatePickerFlyoutItem(target);
      NodeRT::Windows::UI::Xaml::Controls::InitItemsPickedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitPickerConfirmedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitTimePickedEventArgs(target);
      NodeRT::Windows::UI::Xaml::Controls::InitDatePickerFlyoutPresenter(target);
      NodeRT::Windows::UI::Xaml::Controls::InitListPickerFlyoutPresenter(target);
      NodeRT::Windows::UI::Xaml::Controls::InitTimePickerFlyoutPresenter(target);
      NodeRT::Windows::UI::Xaml::Controls::InitPickerFlyoutPresenter(target);
      NodeRT::Windows::UI::Xaml::Controls::InitPivot(target);
      NodeRT::Windows::UI::Xaml::Controls::InitPivotItem(target);
      NodeRT::Windows::UI::Xaml::Controls::InitDatePickerFlyout(target);
      NodeRT::Windows::UI::Xaml::Controls::InitListPickerFlyout(target);
      NodeRT::Windows::UI::Xaml::Controls::InitPickerFlyout(target);
      NodeRT::Windows::UI::Xaml::Controls::InitTimePickerFlyout(target);


  NodeRT::Utils::RegisterNameSpace("Windows.UI.Xaml.Controls", target);
}



NODE_MODULE(binding, init)
